{
  "x-generator": "NSwag v14.2.0.0 (NJsonSchema v11.1.0.0 (Newtonsoft.Json v13.0.0.0))",
  "openapi": "3.0.0",
  "info": {
    "title": "Tonbridge App Api",
    "version": "v0"
  },
  "servers": [
    {
      "url": "https://api.tonbridge.school"
    }
  ],
  "paths": {
    "/Attendance/Codes": {
      "get": {
        "tags": [
          "Attendance"
        ],
        "summary": "Get attendance codes",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*",
        "operationId": "GetAttendanceCodesEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "eventTypes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got attendance codes",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAttendanceCodes_Response"
                },
                "example": {
                  "codes": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get attendance codes"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Attendance"
        ],
        "summary": "Update an existing attendance code",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*",
        "operationId": "PatchAttendanceCodeEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchAttendanceCode_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Updated attendance code",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PatchAttendanceCode_Response"
                },
                "example": {
                  "code": {
                    "code": "",
                    "description": "",
                    "category": "",
                    "archived": false,
                    "showInAbsenceOffex": false,
                    "isAbsent": false,
                    "isPresent": false,
                    "isLate": false,
                    "isUnauthorised": false
                  }
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not update attendance code"
          },
          "404": {
            "description": "An Error Occurred - Could not find attendance code"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Attendance"
        ],
        "summary": "Create a new attendance code",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*",
        "operationId": "PostAttendanceCodeEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostAttendanceCode_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Created attendance code",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostAttendanceCode_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not create attendance code"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Attendance/Entries": {
      "get": {
        "tags": [
          "Attendance"
        ],
        "summary": "Gets attendance entries according to parameters",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*",
        "operationId": "GetAttendanceEntriesEndpoint",
        "parameters": [
          {
            "name": "lessonId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "periodId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "houseId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "classId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "date",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            }
          },
          {
            "name": "includeAdjacent",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got attendance entries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAttendanceEntries_Response"
                },
                "example": {
                  "attendanceEntries": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get attendance entries"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Attendance"
        ],
        "summary": "Update a list of attendance entries",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*",
        "operationId": "PatchAttendanceEntriesEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchAttendanceEntries_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Updated attendance entries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PatchAttendanceEntries_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not update attendance entries"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Attendance"
        ],
        "summary": "Create a list of attendance entries",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*",
        "operationId": "PanopticApiEndpointsAttendanceEntryPostAttendanceEntriesEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostAttendanceEntries_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Created attendance entries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostAttendanceEntries_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - could not create attendance entries"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Auth/Generate/Mobile": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Generate Mobile Login",
        "description": "**Auth:** Anonymous - no token required.\n\nGenerate a mobile login token -- which is sent to the user's mobile device",
        "operationId": "PanopticApiModelsDTOAuthenticationPostGenerateMobileLoginEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostGenerateMobileLogin_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Sent message"
          },
          "400": {
            "description": "An Error Occurred - Could not generate token"
          }
        }
      }
    },
    "/Years": {
      "get": {
        "tags": [
          "Years"
        ],
        "summary": "Get Years",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nGet Years with optional pagination, sorting, filtering and includes<br />Supported Includes: `Students` (This also supports any Student Includes)",
        "operationId": "PanopticApiEndpointsYearsGetYearsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetYears_Response"
                },
                "example": {
                  "years": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Years/Terms": {
      "get": {
        "tags": [
          "Years"
        ],
        "summary": "Get Started Terms for an Academic Year",
        "description": "**Requires permission:** *StaffMember*\n\nReturns the terms that have already started for the given academic year, most recent first.",
        "operationId": "PanopticApiEndpointsYearsGetYearTermsEndpoint",
        "parameters": [
          {
            "name": "academicYear",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Returned terms",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetYearTerms_Response"
                },
                "example": {
                  "terms": [
                    "Michaelmas",
                    "Lent",
                    "Summer"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get terms"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Me/Insights/Files": {
      "get": {
        "tags": [
          "Me"
        ],
        "summary": "Get My File Insights",
        "description": "**Requires permissions:** *StaffMember* or *Student*\n\nReturns the user's shared, used and trending files from Microsoft Graph insights.",
        "operationId": "PanopticApiEndpointsWorkGetInsightFilesEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Returned file insights",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetInsightFiles_Response"
                },
                "example": {
                  "sharedFiles": [],
                  "usedFiles": [],
                  "trendingFiles": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get file insights"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Me/Teams": {
      "get": {
        "tags": [
          "Me"
        ],
        "summary": "Get My Teams",
        "description": "**Requires permissions:** *StaffMember* or *Student*\n\nReturns the Microsoft Teams the logged-in user is a member of.",
        "operationId": "PanopticApiEndpointsWorkGetJoinedTeamsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Returned teams",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetJoinedTeams_Response"
                },
                "example": {
                  "teams": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get teams"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Me/Insights/People": {
      "get": {
        "tags": [
          "Me"
        ],
        "summary": "Get My People Insights",
        "description": "**Requires permissions:** *StaffMember* or *Student*\n\nReturns the people the user works with most, from Microsoft Graph insights (excluding themselves).",
        "operationId": "PanopticApiEndpointsWorkGetPeopleInsightsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Returned people insights",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPeopleInsights_Response"
                },
                "example": {
                  "users": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get people insights"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Me/Insights/Files/Preview": {
      "post": {
        "tags": [
          "Me"
        ],
        "summary": "Get a File Insight Preview Image",
        "description": "**Requires permissions:** *StaffMember* or *Student*\n\nResolves the preview image for a file insight (SharePoint links are fetched via Graph).",
        "operationId": "PanopticApiEndpointsWorkPostInsightsFilePreviewEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetInsightsFilePreviewImage_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Returned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetInsightsFilePreviewImage_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get preview"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Wellbeing/Completion": {
      "get": {
        "tags": [
          "Wellbeing"
        ],
        "summary": "Get Wellbeing Completion",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nGet the wellbeing completion for students - we recommend filtering by year",
        "operationId": "PanopticApiEndpointsWellbeingGetWellbeingCompletionEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWellbeingCompletion_Response"
                },
                "example": {
                  "surveyCompletions": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Wellbeing/Surveys": {
      "get": {
        "tags": [
          "Wellbeing"
        ],
        "summary": "Get Wellbeing Surveys",
        "description": "**Requires permission:** *Student*\n\nGet a list of wellbeing surveys and if the user has completed the survey this year",
        "operationId": "PanopticApiEndpointsWellbeingGetWellbeingSurveysEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWellbeingSurveys_Response"
                },
                "example": {
                  "wellbeingSurveys": [],
                  "completedThisYear": false
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Wellbeing/Survey": {
      "post": {
        "tags": [
          "Wellbeing"
        ],
        "summary": "Post Wellbeing Survey",
        "description": "**Requires permission:** *Student*\n\nPost a wellbeing survey",
        "operationId": "PanopticApiEndpointsWellbeingPostWellbeingSurveyEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWellbeingSurvey_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/WeekendLeave/Addresses": {
      "get": {
        "tags": [
          "Weekendleave"
        ],
        "summary": "Get Weekend Leave Addresses",
        "description": "**Requires permissions:** *Guardian* or *Parent*\n\nThe addresses a parent can pick from for the \"Home / Guardian / Host Family\" option: every contact of the pupil that has an address on record (their own, plus guardians and host families). Restricted relationships are excluded.",
        "operationId": "PanopticApiEndpointsWeekendLeaveGetWeekendLeaveAddressesEndpoint",
        "parameters": [
          {
            "name": "studentUpi",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden - Not a parent of this pupil"
          },
          "200": {
            "description": "Success - Got addresses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWeekendLeaveAddresses_Response"
                },
                "example": {
                  "addresses": []
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/WeekendLeave/Forms": {
      "get": {
        "tags": [
          "Weekendleave"
        ],
        "summary": "Get Weekend Leave Forms",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *AssistantHousemaster* or *Guardian* or *Housemaster* or *Matron* or *Parent* or *Student* or *StudentFacing*\n\nGets a list of Weekend Leave Forms with optional pagination, sorting, filtering and includes. The Form's Weekend Leave Option is included by default.<br />Supported Includes: `Date`.",
        "operationId": "PanopticApiEndpointsWeekendLeaveGetWeekendLeaveFormsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "houseCode",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got Weekend Leave Forms",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWeekendLeaveForms_Response"
                },
                "example": {
                  "forms": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get Weekend Leave Forms"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Weekendleave"
        ],
        "summary": "Post Weekend Leave Form",
        "description": "**Requires permissions:** *Guardian* or *Parent*\n\nCreates a new Weekend Leave Form entity.",
        "operationId": "PanopticApiEndpointsWeekendLeavePostWeekendLeaveFormEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWeekendLeaveForm_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Created weekend leave form",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostWeekendLeaveForm_Response"
                },
                "example": {
                  "form": {
                    "id": 0
                  }
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not create weekend leave form"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/WeekendLeave/Forms/{Id}": {
      "patch": {
        "tags": [
          "Weekendleave"
        ],
        "summary": "Patch Weekend Leave Form",
        "description": "**Requires permissions:** *Guardian* or *Parent*\n\nUpdates an existing Weekend Leave Form entity.",
        "operationId": "PanopticApiEndpointsWeekendLeavePatchWeekendLeaveFormEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchWeekendLeaveForm_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "An Error Occurred - User does not have permission"
          },
          "200": {
            "description": "Success - Created Weekend Leave Form",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PatchWeekendLeaveForm_Response"
                },
                "example": {
                  "form": {
                    "id": 0
                  }
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not create Weekend Leave Form"
          },
          "404": {
            "description": "An Error Occurred - Could not find Weekend Leave Form"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/WeekendLeave/Options": {
      "get": {
        "tags": [
          "Weekendleave"
        ],
        "summary": "Get Weekend Leave Options",
        "description": "**Requires permission:** *AcademicSupport*\n\nGets a list of Weekend Leave Options with optional sorting and filtering.",
        "operationId": "PanopticApiEndpointsWeekendLeaveGetWeekendLeaveOptionsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got Weekend Leave options",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWeekendLeaveOptions_Response"
                },
                "example": {
                  "options": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get Weekend Leave options"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/WeekendLeave/Reminders": {
      "get": {
        "tags": [
          "Weekendleave"
        ],
        "summary": "Get Weekend Leave Reminders",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *AssistantHousemaster* or *Housemaster* or *Matron* or *StudentFacing*\n\nGets a list of Weekend Leave Reminders with optional pagination, sorting and filtering.",
        "operationId": "PanopticApiEndpointsWeekendLeaveGetWeekendLeaveRemindersEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got Weekend Leave reminders",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWeekendLeaveReminders_Response"
                },
                "example": {
                  "reminders": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get Weekend Leave reminders"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Weekendleave"
        ],
        "summary": "Creates and sends a new Weekend Leave Reminder",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *AssistantHousemaster* or *Housemaster* or *Matron* or *StudentFacing*",
        "operationId": "PanopticApiEndpointsWeekendLeavePostWeekendLeaveReminderEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWeekendLeaveReminder_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Created Weekend Leave reminder",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostWeekendLeaveReminder_Response"
                },
                "example": {
                  "reminder": {
                    "id": 0
                  }
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not create Weekend Leave reminder"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/WeekendLeave/Weekends/{Id}": {
      "delete": {
        "tags": [
          "Weekendleave"
        ],
        "summary": "Delete Weekend Leave Weekend",
        "description": "**Requires permission:** *AcademicSupport*\n\nArchives a Weekend Leave Weekend entity",
        "operationId": "PanopticApiEndpointsWeekendLeaveDeleteWeekendLeaveWeekendEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Archived Weekend"
          },
          "400": {
            "description": "An Error Occurred - Could not archive Weekend"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Weekendleave"
        ],
        "summary": "Patch Weekend Leave Weekend",
        "description": "**Requires permission:** *AcademicSupport*\n\nUpdates a Weekend Leave Weekend Entity",
        "operationId": "PanopticApiEndpointsWeekendLeavePatchWeekendLeaveWeekendEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchWeekendLeaveWeekend_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Updated Weekend Leave Weekend",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PatchWeekendLeaveWeekend_Response"
                },
                "example": {
                  "weekend": {
                    "id": 0,
                    "start": "0001-01-01T00:00:00",
                    "end": "0001-01-01T00:00:00",
                    "parentClose": "0001-01-01T00:00:00",
                    "archiveOn": "0001-01-01T00:00:00",
                    "dates": [],
                    "archived": false
                  }
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not update Weekend Leave Weekend"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/WeekendLeave/Weekends": {
      "get": {
        "tags": [
          "Weekendleave"
        ],
        "summary": "Get Weekend Leave Weekends",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *Guardian* or *Parent* or *Student* or *StudentFacing* or *StudyLeaveAdmin*\n\nGets a list of Weekend Leave Weekends with Date entities included by default",
        "operationId": "PanopticApiEndpointsWeekendLeaveGetWeekendLeaveWeekendsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got Weekend Leave Weekends",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWeekendLeaveWeekends_Response"
                },
                "example": {
                  "weekends": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get Weekend Leave Weekends"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Weekendleave"
        ],
        "summary": "Post Weekend Leave Weekend",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nCreates a Weekend Leave Weekend with Date entities",
        "operationId": "PanopticApiEndpointsWeekendLeavePostWeekendLeaveWeekendEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWeekendLeaveWeekend_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Created Weekend Leave Weekend",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWeekendLeaveWeekends_Response"
                },
                "example": {
                  "weekends": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not create Weekend Leave Weekend"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Users": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get All Users",
        "description": "**Requires permission:** *StaffMember*\n\nGet All Users, with optional filtering, paging and sorting",
        "operationId": "PanopticApiEndpointsUsersGetUsersEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUsers_Response"
                },
                "example": {
                  "users": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Unsplash": {
      "get": {
        "tags": [
          "Unsplash"
        ],
        "summary": "Search Unsplash",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nSearch Unsplash with a query",
        "operationId": "PanopticApiEndpointsUnsplashGetSearchUnsplashEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSearchUnsplash_Response"
                },
                "example": {
                  "photos": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Timetable/DayLetter": {
      "get": {
        "tags": [
          "Timetable"
        ],
        "summary": "Get the day letter for the current date",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nReturns the first character of the MIS timetable rotation day name for today (e.g. the 'day letter').",
        "operationId": "PanopticApiEndpointsTimetablingGetDayLetterEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - day letter for today",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetDayLetter_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not retrieve day letter"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Timetable/Periods/{periodId}": {
      "get": {
        "tags": [
          "Timetable"
        ],
        "summary": "Gets a single period",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *Student*",
        "operationId": "PanopticApiEndpointsTimetablingPeriodsGetPeriodEndpoint",
        "parameters": [
          {
            "name": "periodId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got period",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPeriod_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get period"
          },
          "404": {
            "description": "An Error Occurred - Could not find period"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Timetable"
        ],
        "summary": "Archives a period",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing* or *StudentFacing*",
        "operationId": "PanopticApiEndpointsTimetablePeriodsDeletePeriodEndpoint",
        "parameters": [
          {
            "name": "periodId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Archived a period"
          },
          "400": {
            "description": "An Error Occurred - Could not archive period"
          },
          "404": {
            "description": "An Error Occurred - Could not find period"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Timetable/Periods": {
      "get": {
        "tags": [
          "Timetable"
        ],
        "summary": "Gets a list of periods",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *Student* or *StudentFacing*",
        "operationId": "PanopticApiEndpointsTimetablingPeriodsGetPeriodsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "userSpecific",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got periods",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPeriods_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get periods"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Timetable"
        ],
        "summary": "Create a new period",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*",
        "operationId": "PanopticApiEndpointsTimetablingPeriodsPostPeriodEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostPeriod_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got period",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPeriod_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get period"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Timetable/Periods/{PeriodId}": {
      "patch": {
        "tags": [
          "Timetable"
        ],
        "summary": "Updates an existing period",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*",
        "operationId": "PanopticApiEndpointsTimetablingPeriodsPatchPeriodEndpoint",
        "parameters": [
          {
            "name": "periodId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchPeriod_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Updated period",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PatchPeriod_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not update period"
          },
          "404": {
            "description": "An Error Occurred - Could not find period"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Timetable/Lessons": {
      "get": {
        "tags": [
          "Timetable"
        ],
        "summary": "Get Lessons",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *Student*\n\nGet lessons according to the filters",
        "operationId": "PanopticApiEndpointsTimetablingLessonsGetLessonEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got lessons",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetLessons_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/timetable/two-week": {
      "get": {
        "tags": [
          "Timetable"
        ],
        "summary": "Get the two week timetable",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *Student* or *StudentFacing* or *TimetableAdmin*\n\nGet the two week timetable for a given UPI",
        "operationId": "PanopticApiEndpointsTimetablingLessonsGetTwoWeekTimetableEndpoint",
        "parameters": [
          {
            "name": "upi",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTwoWeekTimetable_Response"
                },
                "example": {
                  "timetable": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Timetable/Lessons/Upcoming": {
      "get": {
        "tags": [
          "Timetable"
        ],
        "summary": "Get Upcoming Lessons",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *Guardian* or *Parent* or *Student* or *StudentFacing*\n\nGet the upcoming lessons for a student or staff member",
        "operationId": "PanopticApiEndpointsTimetablingLessonsGetUpcomingLessonsEndpoint",
        "parameters": [
          {
            "name": "upi",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUpcomingLessons_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Timetable/Admin/Sets": {
      "get": {
        "tags": [
          "Timetable"
        ],
        "summary": "Get One Person's Sets",
        "description": "**Requires permission:** *TimetableAdmin*\n\nThe sets a pupil belongs to, or a staff member teaches, this academic year — with subject, teachers and lessons per two-week cycle. Drives the drill-down behind a row on the set-count screen, so it is a per-row user action rather than something the list runs in a loop.",
        "operationId": "PanopticApiEndpointsTimetablingAdminGetTimetableAdminSetsEndpoint",
        "parameters": [
          {
            "name": "upi",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden - Requires TimetableAdmin"
          },
          "200": {
            "description": "Success - Returned the person's sets",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTimetableAdminSets_Response"
                },
                "example": {
                  "name": "",
                  "sets": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Unknown UPI or type"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Timetable/Admin/Staff": {
      "get": {
        "tags": [
          "Timetable"
        ],
        "summary": "Get Timetabled Staff",
        "description": "**Requires permission:** *TimetableAdmin*\n\nEvery member of staff with a set this academic year, their set count, lessons per two-week cycle and the subjects they teach. Staff with no sets are left out — they have no timetable to export. Feeds the staff PDF export's picker.",
        "operationId": "PanopticApiEndpointsTimetablingAdminGetTimetableAdminStaffEndpoint",
        "parameters": [
          {
            "name": "subject",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden - Requires TimetableAdmin"
          },
          "200": {
            "description": "Success - Returned timetabled staff",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTimetableAdminStaff_Response"
                },
                "example": {
                  "staff": [],
                  "subjects": []
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Timetable/Admin/SetCounts": {
      "get": {
        "tags": [
          "Timetable"
        ],
        "summary": "Get Set Counts For Every Pupil",
        "description": "**Requires permission:** *TimetableAdmin*\n\nHow many sets each pupil belongs to this academic year, with their timetabled lessons per two-week cycle and a flag for anyone outside their year group's normal band. Also returns the year group / house / form values present on the roll so the filters offer real options. Four projected queries, no N+1 — this is the same payload the pupil PDF export selects from.",
        "operationId": "PanopticApiEndpointsTimetablingAdminGetTimetableSetCountsEndpoint",
        "parameters": [
          {
            "name": "yearGroup",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "houseId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "form",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden - Requires TimetableAdmin"
          },
          "200": {
            "description": "Success - Returned set counts",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTimetableSetCounts_Response"
                },
                "example": {
                  "students": [],
                  "yearGroups": [],
                  "houses": [],
                  "forms": [],
                  "yearGroupNorms": []
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Timetable/DaysAndPeriods": {
      "get": {
        "tags": [
          "Timetable"
        ],
        "summary": "Get Days and Periods",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGets the Days and Periods for the school",
        "operationId": "PanopticApiEndpointsTimetableGetDaysAndPeriodsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetDaysAndPeriods_Response"
                },
                "example": {
                  "days": [],
                  "periods": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Timetable": {
      "get": {
        "tags": [
          "Timetable"
        ],
        "summary": "Get Timetable",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGets the Timetable for a given student or teacher, based on their UPI",
        "operationId": "PanopticApiEndpointsTimetableGetTimetableEndpoint",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "upi",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTimetable_Response"
                },
                "example": {
                  "lessons": [],
                  "showMore": false,
                  "staffMember": false
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/SystemQueries": {
      "get": {
        "tags": [
          "Systemqueries"
        ],
        "summary": "Get System Queries",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nReturn the metadata of the app-managed system queries the caller is permitted to see (visibility = list curation). Run one via GET /SystemQueries/{key}.",
        "operationId": "PanopticApiEndpointsSystemQueriesGetSystemQueriesEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSystemQueries_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/SystemQueries/{key}": {
      "get": {
        "tags": [
          "Systemqueries"
        ],
        "summary": "Run System Query",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nRun a system query by its key and return its columns and rows. Each query has its own bespoke, efficient EF. Refine toggles are passed as query parameters (e.g. ?overseas=true). Forbidden if the caller lacks its visibility roles.",
        "operationId": "PanopticApiEndpointsSystemQueriesGetSystemQueryEndpoint",
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden - Not visible to the caller"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSystemQuery_Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found - No such system query"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Subjects": {
      "get": {
        "tags": [
          "Subjects"
        ],
        "summary": "Get Subjects",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet Subjects with optional pagination, sorting, filtering and includes<br />Supported Includes: `SubjectHeads`, `SubjectHeads.Staff`, `Classes`, `Classes.Staff` (This also supports any Staff Member Includes)",
        "operationId": "PanopticApiEndpointsSubjectsGetSubjectsEndpoint",
        "parameters": [
          {
            "name": "filterByClass",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSubjects_Response"
                },
                "example": {
                  "subjects": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Subjects/Heads": {
      "delete": {
        "tags": [
          "Subjects"
        ],
        "summary": "Delete Subject Head",
        "description": "**Requires permission:** *IT*\n\nDelete a subject head",
        "operationId": "PanopticApiEndpointsSubjectsHeadsDeleteSubjectHeadEndpoint",
        "parameters": [
          {
            "name": "subjectHeadId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Deleted Subject Head"
          },
          "400": {
            "description": "An Error Occurred - Could not delete Subject Head"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Subjects"
        ],
        "summary": "Update Subject Head",
        "description": "**Requires permission:** *IT*\n\nUpdate an existing subject head",
        "operationId": "PanopticApiEndpointsSubjectsHeadsPatchSubjectHeadEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchSubjectHead_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Updated Subject Head"
          },
          "400": {
            "description": "An Error Occurred - Could not update Subject Head"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Subjects"
        ],
        "summary": "Create Subject Head",
        "description": "**Requires permission:** *IT*\n\nCreate a new subject head",
        "operationId": "PanopticApiEndpointsSubjectsHeadsPostSubjectHeadEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSubjectHead_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Created Subject Head"
          },
          "400": {
            "description": "An Error Occurred - Could not create Subject Head"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StudyLeave/Weeks": {
      "delete": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Delete Study Leave Week",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nDelete a study leave week. This shouldn't really be used. Use in `RARE` cases where a week was created by mistake. Deleting a week that has submissions will cause issues with the submissions.",
        "operationId": "PanopticApiEndpointsStudyLeaveWeeksDeleteStudyLeaveWeekEndpoint",
        "parameters": [
          {
            "name": "studyLeaveWeekId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Get Study Leave Weeks",
        "description": "**Requires permissions:** *Housemaster* or *Matron* or *SeniorStudent* or *StudyLeaveAdmin*\n\nGet study leave weeks wiht pagination, filtering and sorting",
        "operationId": "PanopticApiEndpointsStudyLeaveWeeksGetStudyLeaveWeeksEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudyLeaveWeeks_Response"
                },
                "example": {
                  "studyLeaveWeeks": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Patch Study Leave Week",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nUpdate a study leave week",
        "operationId": "PanopticApiEndpointsStudyLeaveWeeksPatchStudyLeaveWeekEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchStudyLeaveWeek_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Post Study Leave Week",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nCreate a Study Leave Week",
        "operationId": "PanopticApiEndpointsStudyLeaveWeeksPostStudyLeaveWeekEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostStudyLeaveWeek_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StudyLeave/Weeks/Years": {
      "delete": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Delete Study Leave Week Year",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nDeletes a study leave week year",
        "operationId": "PanopticApiEndpointsStudyLeaveWeeksYearsDeleteStudyLeaveWeekYearEndpoint",
        "parameters": [
          {
            "name": "studyLeaveWeekYearId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Get Study Leave Week Years",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nGet Study Leave Week Years with Filtering, Sorting and Paging",
        "operationId": "PanopticApiEndpointsStudyLeaveWeeksYearsGetStudyLeaveWeekYearsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudyLeaveWeekYears_Response"
                },
                "example": {
                  "studyLeaveWeekYears": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Patch Study Leave Week Year",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nUpdate a Study Leave Week Year",
        "operationId": "PanopticApiEndpointsStudyLeaveWeeksYearsPatchStudyLeaveWeekYearEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchStudyLeaveWeekYear_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Post Study Leave Week Year",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nCreate a study leave week year",
        "operationId": "PanopticApiEndpointsStudyLeaveWeeksYearsPostStudyLeaveWeekYearEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostStudyLeaveWeekYear_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StudyLeave/Weeks/Dates": {
      "delete": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Delete Study Leave Date",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nDeletes a specific study leave date.",
        "operationId": "PanopticApiEndpointsStudyLeaveWeeksDatesDeleteStudyLeaveDateEndpoint",
        "parameters": [
          {
            "name": "studyLeaveDateId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Get Study Leave Dates",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nGet Study Leave Dates with Filtering, Sorting and Paging",
        "operationId": "PanopticApiEndpointsStudyLeaveWeeksDatesGetStudyLeaveDatesEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudyLeaveDates_Response"
                },
                "example": {
                  "studyLeaveDates": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Patch Study Leave Date",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nUpdate a study leave date",
        "operationId": "PanopticApiEndpointsStudyLeaveWeeksDatesPatchStudyLeaveDateEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchStudyLeaveDate_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Post Study Leave Date",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nCreate a study leave date",
        "operationId": "PanopticApiEndpointsStudyLeaveWeeksDatesPostStudyLeaveDateEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostStudyLeaveDate_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StudyLeave/Submissions": {
      "patch": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Patch Study Leave Submission",
        "description": "**Requires permissions:** *Guardian* or *Parent* or *StudyLeaveAdmin*\n\nUpdate an existing study leave submission",
        "operationId": "PanopticApiEndpointsStudyLeaveSubmissionsPatchStudyLeaveSubmissionEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchStudyLeaveSubmission_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Post Study Leave Submission",
        "description": "**Requires permissions:** *Guardian* or *Parent* or *StudyLeaveAdmin*\n\nCreate a study leave submission for one student and one date",
        "operationId": "PanopticApiEndpointsStudyLeaveSubmissionsPostStudyLeaveSubmissionEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostStudyLeaveSubmission_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StudyLeave/Periods": {
      "delete": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Delete Study Leave Period",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nDelete Study Leave Period, Check if there are submissions via `hasSubmissions` field",
        "operationId": "PanopticApiEndpointsStudyLeavePeriodsDeleteStudyLeavePeriodEndpoint",
        "parameters": [
          {
            "name": "studyLeavePeriodId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Get Study Leave Periods",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nGet Study Leave Periods with filtering, sorting, and pagination.",
        "operationId": "PanopticApiEndpointsStudyLeavePeriodsGetStudyLeavePeriodsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudyLeavePeriods_Response"
                },
                "example": {
                  "studyLeavePeriods": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Patch Study Leave Period",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nUpdate a study leave period",
        "operationId": "PanopticApiEndpointsStudyLeavePeriodsPatchStudyLeavePeriodEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchStudyLeavePeriod_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Post Study Leave Period",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nCreate a new study leave period",
        "operationId": "PanopticApiEndpointsStudyLeavePeriodsPostStudyLeavePeriodEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostStudyLeavePeriod_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StudyLeave/Periods/Groups": {
      "get": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Get Study Leave Period Groups",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nRetrieve a list of study leave period groups with filtering, sorting, and pagination.",
        "operationId": "PanopticApiEndpointsStudyLeavePeriodsGroupsGetStudyLeavePeriodGroupsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudyLeavePeriodGroups_Response"
                },
                "example": {
                  "studyLeavePeriodGroups": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Patch Study Leave Period Group",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nUpdate a study leave period group",
        "operationId": "PanopticApiEndpointsStudyLeavePeriodsGroupsPatchStudyLeavePeriodGroupEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchStudyLeavePeriodGroup_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Brief Description",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nLong Description",
        "operationId": "PanopticApiEndpointsStudyLeavePeriodsGroupsPostStudyLeavePeriodGroupEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostStudyLeavePeriodGroup_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StudyLeave/Periods/Access": {
      "delete": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Delete Study Leave Period Access",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nDelete Study Leave Period Access",
        "operationId": "PanopticApiEndpointsStudyLeavePeriodsAccessDeleteStudyLeavePeriodAccessEndpoint",
        "parameters": [
          {
            "name": "studyLeavePeriodAccessId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Get Study Leave Period Access",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nGet Study Leave Period Access, with support for filtering, pagination etc",
        "operationId": "PanopticApiEndpointsStudyLeavePeriodsAccessGetStudyLeavePeriodAccessEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudyLeavePeriodAccess_Response"
                },
                "example": {
                  "studyLeavePeriodAccess": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Patch Study Leave Period Access",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nUpdate Study Leave Period Access",
        "operationId": "PanopticApiEndpointsStudyLeavePeriodsAccessPatchStudyLeavePeriodAccessEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchStudyLeavePeriodAccess_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Post Study Leave Period Access",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nCreate a new Study Leave Period Access",
        "operationId": "PanopticApiEndpointsStudyLeavePeriodsAccessPostStudyLeavePeriodAccessEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostStudyLeavePeriodAccess_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StudyLeave/Options": {
      "get": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Get Study Leave Options",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nGet study leave options with filtering, sorting and paging",
        "operationId": "PanopticApiEndpointsStudyLeaveOptionsGetStudyLeaveOptionsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudyLeaveOptions_Response"
                },
                "example": {
                  "studyLeaveOptions": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Patch Study Leave Option",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nUpdate a study leave option",
        "operationId": "PanopticApiEndpointsStudyLeaveOptionsPatchStudyLeaveOptionEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchStudyLeaveOption_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Post Study Leave Option",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nCreate a study leave option",
        "operationId": "PanopticApiEndpointsStudyLeaveOptionsPostStudyLeaveOptionEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostStudyLeaveOption_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StudyLeave/Options/Groups": {
      "get": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Get Study Leave Option Groups",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nGet study leave option groups with filtering, sorting and paging",
        "operationId": "PanopticApiEndpointsStudyLeaveOptionsGroupsGetStudyLeaveOptionGroupsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudyLeaveOptionGroups_Response"
                },
                "example": {
                  "studyLeaveOptionGroups": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Patch Study Leave Option Group",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nUpdate a study leave option group",
        "operationId": "PanopticApiEndpointsStudyLeaveOptionsGroupsPatchStudyLeaveOptionGroupEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchStudyLeaveOptionGroup_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Post Study Leave Option Group",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nCreate a study leave option group",
        "operationId": "PanopticApiEndpointsStudyLeaveOptionsGroupsPostStudyLeaveOptionGroupEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostStudyLeaveOptionGroup_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StudyLeave/Options/Access": {
      "delete": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Delete Study Leave Option Access",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nDelete a study leave option access",
        "operationId": "PanopticApiEndpointsStudyLeaveOptionsAccessDeleteStudyLeaveOptionAccessEndpoint",
        "parameters": [
          {
            "name": "studyLeaveOptionAccessId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Get Study Leave Option Access",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nGet study leave option access with filtering, sorting and paging",
        "operationId": "PanopticApiEndpointsStudyLeaveOptionsAccessGetStudyLeaveOptionAccessEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudyLeaveOptionAccess_Response"
                },
                "example": {
                  "studyLeaveOptionAccess": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Patch Study Leave Option Access",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nUpdate study leave option access",
        "operationId": "PanopticApiEndpointsStudyLeaveOptionsAccessPatchStudyLeaveOptionAccessEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchStudyLeaveOptionAccess_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Post Study Leave Option Access",
        "description": "**Requires permission:** *StudyLeaveAdmin*\n\nCreate a study leave option access",
        "operationId": "PanopticApiEndpointsStudyLeaveOptionsAccessPostStudyLeaveOptionAccessEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostStudyLeaveOptionAccess_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StudyLeave/House/Forms": {
      "get": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Get Study Leave House Forms",
        "description": "**Requires permissions:** *Housemaster* or *Matron* or *SeniorStudent* or *StudyLeaveAdmin*\n\nGet study leave house forms with filtering, sorting and paging",
        "operationId": "PanopticApiEndpointsStudyLeaveHouseGetStudyLeaveHouseFormsEndpoint",
        "parameters": [
          {
            "name": "academicHouseId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "studyLeaveWeekId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudyLeaveHouseForms_Response"
                },
                "example": {
                  "studyLeaveSubmissions": [],
                  "studentsWithoutSubmissions": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StudyLeave/House/Reminders": {
      "get": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Get Study Leave House Reminders",
        "description": "**Requires permissions:** *Housemaster* or *Matron* or *SeniorStudent* or *StudyLeaveAdmin*\n\nGet study leave house reminders with filtering, sorting and paging",
        "operationId": "PanopticApiEndpointsStudyLeaveHouseGetStudyLeaveHouseRemindersEndpoint",
        "parameters": [
          {
            "name": "studyLeaveWeekId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "academicHouseId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudyLeaveHouseReminders_Response"
                },
                "example": {
                  "studyLeaveReminders": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Post Study Leave House Reminders",
        "description": "**Requires permissions:** *Housemaster* or *Matron* or *SeniorStudent* or *StudyLeaveAdmin*\n\nCreate study leave house reminders",
        "operationId": "PanopticApiEndpointsStudyLeaveHousePostStudyLeaveHouseRemindersEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostStudyLeaveHouseReminders_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StudyLeave/Forms": {
      "get": {
        "tags": [
          "Studyleave"
        ],
        "summary": "Get Study Leave Forms",
        "description": "**Requires permissions:** *Guardian* or *Parent* or *StudyLeaveAdmin*\n\nGet Study Leave form data for a single student",
        "operationId": "PanopticApiEndpointsStudyLeaveFormsGetStudyLeaveFormDetailsEndpoint",
        "parameters": [
          {
            "name": "studentUpi",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudyLeaveFormDetails_Response"
                },
                "example": {
                  "studyLeaveOptionGroups": [],
                  "studyLeavePeriodGroups": [],
                  "studyLeaveWeeks": [],
                  "studyLeaveSubmissions": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Students/Number": {
      "get": {
        "tags": [
          "Students"
        ],
        "summary": "Get Student Number",
        "description": "**Requires permission:** *Student*\n\nGets the Mobile Number of the logged in Student",
        "operationId": "PanopticApiEndpointsStudentsGetStudentNumberEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got Number",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudentNumber_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get number"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Students"
        ],
        "summary": "Update Student Number",
        "description": "**Requires permissions:** *NewJoiner* or *Student*\n\nUpdates the mobile number of the signed-in pupil. If the number has CHANGED it must first have been confirmed by a code texted to it, and the new number is written straight into iSAMS. Confirming the number already on record changes nothing and needs no code.",
        "operationId": "PanopticApiEndpointsStudentsPatchStudentNumberEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchStudentNumber_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Updated Number"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not update number"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Students": {
      "get": {
        "tags": [
          "Students"
        ],
        "summary": "Get Students",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *Guardian* or *Parent* or *Student* or *StudentFacing*\n\nGet a list of students with optional pagination, sorting, filtering and includes<br />Supported Includes: `SendList`, `EalList`, `Photo`, `House`, `House.Staff`, `House.Staff.Photo`, `Year`, `Form`, `Form.Staff`, `Form.Photo`, `Relations`, `Relations.Contacts` (This can be done infinitely, e.g. `Relations.Contacts.To.Relations.Contacts` or `Relations.Contacts.From.Relations.Contacts`), `InverseRelations`, `InverseRelations.Contacts` (This can be done infinitely, e.g. `InverseRelations.Contacts.To.InverseRelations.Contacts` or `InverseRelations.Contacts.From.InverseRelations.Contacts`), `Classes`, `Classes.Staff`, `Classes.Staff.Photo` and `MusicLessons`",
        "operationId": "PanopticApiEndpointsStudentsGetStudentsEndpoint",
        "parameters": [
          {
            "name": "academicYear",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "includeLeavers",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudents_Response"
                },
                "example": {
                  "students": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Students/CandidateNumbers/Import": {
      "post": {
        "tags": [
          "Students"
        ],
        "summary": "Import Candidate Numbers",
        "description": "**Requires permission:** *IT*\n\nBulk-set exam candidate numbers from an Excel import, matched by MisId (iSAMS SchoolId). Updates both the per-year Students rows and the canonical Pupil rows. Used by the App Admin 'Candidate Numbers' importer because iSAMS does not expose candidate numbers over its API.",
        "operationId": "PanopticApiEndpointsStudentsPostImportCandidateNumbersEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportCandidateNumbers_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - candidate numbers imported",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportCandidateNumbers_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not import candidate numbers"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StaffMember": {
      "get": {
        "tags": [
          "Staffmember"
        ],
        "summary": "Get a staff member by email address",
        "description": "**Requires permission:** *StaffMember*\n\nGet a staff member by email address with optional pagination, sorting, filtering and includes<br />Supported Includes: `LeaveRequests`, `LineManager`, `DirectReports`, `Classes`, `ParentContact` (Also supports includes on the parent contact e.g. `ParentContact.InverseRelations`)",
        "operationId": "PanopticApiEndpointsStaffMembersGetStaffMemberEndpoint",
        "parameters": [
          {
            "name": "emailAddress",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStaffMember_Response"
                },
                "example": {
                  "leaveRequests": [],
                  "directReports": [],
                  "classes": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StaffMembers": {
      "get": {
        "tags": [
          "Staffmembers"
        ],
        "summary": "Get Staff Members",
        "description": "**Requires permission:** *StaffMember*\n\nGet Staff Members with optional pagination, sorting, filtering and includes<br />Supported Includes: None ",
        "operationId": "PanopticApiEndpointsStaffMembersGetStaffMembersEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "userDepartmentOnly",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "school",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStaffMembers_Response"
                },
                "example": {
                  "staffMembers": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StaffLifecycle/Departments": {
      "get": {
        "tags": [
          "Stafflifecycle"
        ],
        "description": "**Requires permissions:** *HR* or *HRAdmin* or *IT*",
        "operationId": "PanopticApiEndpointsStaffLifecycleGetDepartmentsEndpoint",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DepartmentsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StaffLifecycle/Freshservice/Assignees": {
      "get": {
        "tags": [
          "Stafflifecycle"
        ],
        "description": "**Requires permissions:** *Admin* or *IT*",
        "operationId": "PanopticApiEndpointsStaffLifecycleGetFreshserviceAssigneesEndpoint",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssigneesResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StaffLifecycle/Freshservice/TicketCategories": {
      "get": {
        "tags": [
          "Stafflifecycle"
        ],
        "description": "**Requires permissions:** *Admin* or *IT*",
        "operationId": "PanopticApiEndpointsStaffLifecycleGetFreshserviceTicketCategoriesEndpoint",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TicketCategoriesResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StaffLifecycle/Isams/Countries": {
      "get": {
        "tags": [
          "Stafflifecycle"
        ],
        "description": "**Requires permissions:** *HR* or *HRAdmin* or *IT*",
        "operationId": "PanopticApiEndpointsStaffLifecycleGetIsamsCountriesEndpoint",
        "parameters": [
          {
            "name": "location",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CountriesResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StaffLifecycle/ExistingStaff": {
      "get": {
        "tags": [
          "Stafflifecycle"
        ],
        "summary": "Staff Lifecycle - is this person already here?",
        "description": "**Requires permissions:** *HR* or *HRAdmin* or *IT*\n\nCurrent members of staff matching the name on an onboarding request, so the form can say so while it is being filled in rather than only when it is submitted. Returns an empty list when the name is too incomplete to match on.",
        "operationId": "PanopticApiEndpointsStaffLifecycleRequestsGetExistingStaffEndpoint",
        "parameters": [
          {
            "name": "forename",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "preferredName",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "surname",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExistingStaffResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StaffLifecycle/Requests": {
      "get": {
        "tags": [
          "Stafflifecycle"
        ],
        "description": "**Requires permissions:** *HR* or *HRAdmin* or *IT*",
        "operationId": "PanopticApiEndpointsStaffLifecycleRequestsGetLifecycleRequestsEndpoint",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "mine",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LifecycleRequestListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Stafflifecycle"
        ],
        "description": "**Requires permissions:** *HR* or *HRAdmin* or *IT*",
        "operationId": "PanopticApiEndpointsStaffLifecycleRequestsPostLifecycleRequestEndpoint",
        "requestBody": {
          "x-name": "LifecycleRequestDto",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LifecycleRequestDto"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LifecycleRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StaffLifecycle/Requests/{id}": {
      "get": {
        "tags": [
          "Stafflifecycle"
        ],
        "description": "**Requires permissions:** *HR* or *HRAdmin* or *IT*",
        "operationId": "PanopticApiEndpointsStaffLifecycleRequestsGetLifecycleRequestEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LifecycleRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "put": {
        "tags": [
          "Stafflifecycle"
        ],
        "description": "**Requires permissions:** *HR* or *HRAdmin* or *IT*",
        "operationId": "PanopticApiEndpointsStaffLifecycleRequestsPutLifecycleRequestEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "x-name": "LifecycleRequestDto",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LifecycleRequestDto"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LifecycleRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StaffLifecycle/Requests/{id}/edit": {
      "post": {
        "tags": [
          "Stafflifecycle"
        ],
        "description": "**Requires permissions:** *HR* or *HRAdmin* or *IT*",
        "operationId": "PanopticApiEndpointsStaffLifecycleRequestsEditLifecycleRequestEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "x-name": "LifecycleRequestDto",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LifecycleRequestDto"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LifecycleRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StaffLifecycle/Requests/{id}/submit": {
      "post": {
        "tags": [
          "Stafflifecycle"
        ],
        "description": "**Requires permissions:** *HR* or *HRAdmin* or *IT*",
        "operationId": "PanopticApiEndpointsStaffLifecycleRequestsSubmitLifecycleRequestEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "x-name": "SubmitRequestRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitRequestRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LifecycleRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StaffLifecycle/Requests/{id}/retry": {
      "post": {
        "tags": [
          "Stafflifecycle"
        ],
        "description": "**Requires permissions:** *HR* or *HRAdmin* or *IT*",
        "operationId": "PanopticApiEndpointsStaffLifecycleRequestsRetryLifecycleRequestEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LifecycleRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StaffLifecycle/Requests/{id}/cancel": {
      "post": {
        "tags": [
          "Stafflifecycle"
        ],
        "description": "**Requires permissions:** *HR* or *HRAdmin* or *IT*",
        "operationId": "PanopticApiEndpointsStaffLifecycleRequestsCancelLifecycleRequestEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LifecycleRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/StaffLifecycle/Config/{type}": {
      "get": {
        "tags": [
          "Stafflifecycle"
        ],
        "description": "**Requires permissions:** *HR* or *IT*",
        "operationId": "PanopticApiEndpointsStaffLifecycleConfigGetWorkflowConfigEndpoint",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkflowConfigDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "put": {
        "tags": [
          "Stafflifecycle"
        ],
        "description": "**Requires permissions:** *Admin* or *IT*",
        "operationId": "PanopticApiEndpointsStaffLifecycleConfigPutWorkflowConfigEndpoint",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "x-name": "WorkflowConfigDto",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkflowConfigDto"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkflowConfigDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/skills/usercoursedata": {
      "get": {
        "tags": [
          "Skills"
        ],
        "summary": "Returns nullable UserCourse, BookmarkedCourse, and AssignedCourse objects by email and courseId. If no email is provided, it uses the caller's email.",
        "description": "**Requires permission:** *StaffMember*",
        "operationId": "PanopticApiEndpointsSkillsUserCoursesGetUserCourseDataEndpoint",
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "courseId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Returned course objects",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUserCourseData_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get course objects"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/skills/usercourses": {
      "get": {
        "tags": [
          "Skills"
        ],
        "summary": "Returns a list of viewed/assigned courses associated with a user's email address.",
        "description": "**Requires permission:** *StaffMember*",
        "operationId": "PanopticApiEndpointsSkillsUserCoursesGetUserCoursesByEmailEndpoint",
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Returned a list of user courses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUserCoursesByEmail_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get user courses"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/skills/usercourse": {
      "put": {
        "tags": [
          "Skills"
        ],
        "summary": "Either adds or updates a user course entry, based on the user's email and the course's ID.",
        "description": "**Requires permission:** *StaffMember*",
        "operationId": "PanopticApiEndpointsSkillsUserCoursesPutUserCourseEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutUserCourse_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Added/updated user course"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not add/update user course"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/skills/courses": {
      "get": {
        "tags": [
          "Skills"
        ],
        "summary": "Gets a merged list of LinkedIn and Microsoft Learn courses",
        "description": "**Requires permission:** *StaffMember*",
        "operationId": "PanopticApiEndpointsSkillsCoursesGetCoursesBySearchEndpoint",
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "start",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "count",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved a list of courses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCoursesBySearch_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not retrieve courses"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/skills/view/linkedin": {
      "get": {
        "tags": [
          "Skills"
        ],
        "summary": "Gets a single LinkedIn course via the LinkedIn extension",
        "description": "**Requires permission:** *StaffMember*",
        "operationId": "PanopticApiEndpointsSkillsCoursesGetLinkedInCourseByIdEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved a course",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetLinkedInCourseById_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not retrieve course"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/skills/courses/linkedin": {
      "get": {
        "tags": [
          "Skills"
        ],
        "summary": "Gets a list of all LinkedIn courses matching the search query",
        "description": "**Requires permission:** *LinkedIn*",
        "operationId": "PanopticApiEndpointsSkillsCoursesGetLinkedInCoursesBySearchEndpoint",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got LinkedIn courses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetLinkedInCoursesBySearch_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not retrieve LinkedIn courses"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/skills/view/mslearn": {
      "get": {
        "tags": [
          "Skills"
        ],
        "summary": "Gets a single MS Learn course via the Microsoft extension",
        "description": "**Requires permission:** *StaffMember*",
        "operationId": "PanopticApiEndpointsSkillsCoursesGetMSLearnCourseByIdEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved a course",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMSLearnCourseById_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not retrieve course"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/skills/courses/mslearn": {
      "get": {
        "tags": [
          "Skills"
        ],
        "summary": "Gets a list of all MS Learn courses matching the search query",
        "description": "**Requires permission:** *StaffMember*",
        "operationId": "PanopticApiEndpointsSkillsCoursesGetMsLearnCoursesBySearchEndpoint",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got MS Learn courses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMsLearnCoursesBySearch_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not retrieve MS Learn courses"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/skills/bookmark": {
      "delete": {
        "tags": [
          "Skills"
        ],
        "summary": "Deletes a bookmarked course from Skills_BookmarkedCourses",
        "description": "**Requires permission:** *StaffMember*",
        "operationId": "PanopticApiEndpointsSkillsBookmarksDeleteBookmarkedCourseEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "*/*": {
              "schema": {
                "$ref": "#/components/schemas/DeleteBookmarkedCourse_Request"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteBookmarkedCourse_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Deleted bookmarked course"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not delete bookmarked course"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Skills"
        ],
        "summary": "Adds a bookmarked course to Skills_BookmarkedCourses for a user.",
        "description": "**Requires permission:** *StaffMember*",
        "operationId": "PanopticApiEndpointsSkillsBookmarksPostBookmarkedCourseEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBookmarkedCourse_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Added bookmarked course",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostBookmarkedCourse_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not add bookmarked course"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/skills/bookmarkedcourses": {
      "get": {
        "tags": [
          "Skills"
        ],
        "summary": "Returns a list of bookmarked courses associated with a user's email address.",
        "description": "**Requires permission:** *StaffMember*",
        "operationId": "PanopticApiEndpointsSkillsBookmarksGetBookmarkedCoursesByEmailEndpoint",
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Returned a list of bookmarked courses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetBookmarkedCoursesByEmail_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get bookmarked courses"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/skills/assign": {
      "delete": {
        "tags": [
          "Skills"
        ],
        "summary": "Deletes an assigned course from Skills_AssignedCourses",
        "description": "**Requires permission:** *StaffMember*",
        "operationId": "PanopticApiEndpointsSkillsAssignedDeleteAssignedCourseEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "*/*": {
              "schema": {
                "$ref": "#/components/schemas/DeleteAssignedCourse_Request"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteAssignedCourse_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Deleted assigned course"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not delete assigned course"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "put": {
        "tags": [
          "Skills"
        ],
        "summary": "Adds/updates assigned courses to Skills_AssignedCourses.",
        "description": "**Requires permission:** *StaffMember*",
        "operationId": "PanopticApiEndpointsSkillsAssignedPutAssignedCourseEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutAssignedCourse_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Added/updated assigned courses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PutAssignedCourse_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not add/update assigned courses"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/skills/assignedcourses": {
      "get": {
        "tags": [
          "Skills"
        ],
        "summary": "Returns a list of assigned courses associated with a user's email address.",
        "description": "**Requires permission:** *StaffMember*",
        "operationId": "PanopticApiEndpointsSkillsAssignedGetAssignedCoursesByEmailEndpoint",
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Returned a list of assigned courses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAssignedCoursesByEmail_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get assigned courses"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Signage/Display/AdmissionsCalendar": {
      "get": {
        "tags": [
          "Signage"
        ],
        "summary": "Signage - Admissions calendar",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nThe next 7 days of the admissions calendar grouped by day, each event with subject, time/all-day, location, organiser and attendees. Ended events for today are dropped. Display-facing.",
        "operationId": "PanopticApiEndpointsSignageGetSignageAdmissionsCalendarEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSignageCalendar_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Signage/Display/Context": {
      "get": {
        "tags": [
          "Signage"
        ],
        "summary": "Signage - display context",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nReturns the calling display's identity (which screen it is) and any resolved content overrides. The display is determined server-side from the credential bound to the token's client id - the device cannot choose its screen. Polled by the kiosk client on each refresh. Requires a signage display token granted /Signage/Display.",
        "operationId": "PanopticApiEndpointsSignageGetSignageContextEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSignageContext_Response"
                }
              }
            }
          },
          "403": {
            "description": "Caller is not a bound signage display"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Signage/Display/ItTickets": {
      "get": {
        "tags": [
          "Signage"
        ],
        "summary": "Signage - IT & Digital tickets board",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nPer-agent ticket columns (from the configurable Signage_ItAgents list) plus an Unassigned column, the IT support team calendar, and the server time. Display-facing.",
        "operationId": "PanopticApiEndpointsSignageGetSignageItTicketsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSignageItTickets_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Signage/Display/Science": {
      "get": {
        "tags": [
          "Signage"
        ],
        "summary": "Signage - Science display content",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nReturns the Science Village content for a date (defaults to today) in the ported ScienceDisplay shape. Display-facing; the kiosk rotates/filters subjects client-side.",
        "operationId": "PanopticApiEndpointsSignageGetSignageScienceEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSignageScience_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Signage/Admin/Overrides/{overrideId}": {
      "delete": {
        "tags": [
          "Signage"
        ],
        "summary": "Signage admin - clear a content override",
        "description": "**Requires permission:** *IT*\n\nDeletes an override. Affected displays return to normal content on their next refresh. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsSignageAdminDeleteSignageOverrideEndpoint",
        "parameters": [
          {
            "name": "overrideId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Cleared"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Signage/Admin/Displays": {
      "get": {
        "tags": [
          "Signage"
        ],
        "summary": "Signage admin - list displays",
        "description": "**Requires permission:** *IT*\n\nLists all display definitions with their bound credentials (client id + status). The secret is never returned. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsSignageAdminGetSignageDisplaysEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSignageDisplays_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Signage"
        ],
        "summary": "Signage admin - create display credential",
        "description": "**Requires permission:** *IT*\n\nCreates a service account scoped to /Signage/Display, binds it to a display definition, and returns the client id and raw secret ONCE (only the hash is stored). Requires the IT permission.",
        "operationId": "PanopticApiEndpointsSignageAdminPostSignageDisplayEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSignageDisplay_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success - credential created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostSignageDisplay_Response"
                }
              }
            }
          },
          "400": {
            "description": "Unknown display key"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Signage/Admin/ItAgents": {
      "get": {
        "tags": [
          "Signage"
        ],
        "summary": "Signage admin - list IT board agents",
        "description": "**Requires permission:** *IT*\n\nThe configurable IT-tickets board agent list. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsSignageAdminGetSignageItAgentsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSignageItAgents_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "put": {
        "tags": [
          "Signage"
        ],
        "summary": "Signage admin - replace IT board agents",
        "description": "**Requires permission:** *IT*\n\nReplaces the IT-tickets board agent list with the supplied set (each: display name, Freshservice agent id, sort order, active). Requires the IT permission.",
        "operationId": "PanopticApiEndpointsSignageAdminPutSignageItAgentsEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutSignageItAgents_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success - saved",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PutSignageItAgents_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Signage/Admin/Overrides": {
      "get": {
        "tags": [
          "Signage"
        ],
        "summary": "Signage admin - list content overrides",
        "description": "**Requires permission:** *IT*\n\nAll content overrides (active and inactive). Requires the IT permission.",
        "operationId": "PanopticApiEndpointsSignageAdminGetSignageOverridesEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSignageOverrides_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Signage"
        ],
        "summary": "Signage admin - create or update a content override",
        "description": "**Requires permission:** *IT*\n\nCreates a new override, or updates one when OverrideId is supplied. Kind must be BottomMessage or FullScreen; TargetKey must be 'all' or an existing display key. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsSignageAdminPostSignageOverrideEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSignageOverride_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostSignageOverride_Response"
                }
              }
            }
          },
          "400": {
            "description": "Invalid kind or target"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Signage/Admin/Displays/{clientId}/secret": {
      "post": {
        "tags": [
          "Signage"
        ],
        "summary": "Signage admin - regenerate or deactivate a display credential",
        "description": "**Requires permission:** *IT*\n\nWith active=true (default) regenerates the credential's secret and returns the new raw secret ONCE. With active=false deactivates the credential (revocation takes effect at the display's next token re-mint). Requires the IT permission.",
        "operationId": "PanopticApiEndpointsSignageAdminPostSignageDisplaySecretEndpoint",
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSignageDisplaySecret_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostSignageDisplaySecret_Response"
                }
              }
            }
          },
          "400": {
            "description": "Unknown client id"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Signage/Admin/Science/Import": {
      "post": {
        "tags": [
          "Signage"
        ],
        "summary": "Signage admin - import legacy Science Firebase export",
        "description": "**Requires permission:** *ScienceDisplayManagers*\n\nOne-off migration. POST the raw Firebase export JSON (either the whole document with a top-level 'Data' object, or the 'Data' object itself). Walks Data/yy/MM/dd, reconstructs 20yy-MM-dd, and inserts any room/announcement not already present (idempotent - safe to re-run). Requires the ScienceDisplayManagers permission.",
        "operationId": "PanopticApiEndpointsSignageAdminPostSignageScienceImportEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing ScienceDisplayManagers permission"
          },
          "200": {
            "description": "Success - import summary",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostSignageScienceImport_Response"
                }
              }
            }
          },
          "400": {
            "description": "Body was not valid Firebase export JSON"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ShortLinks": {
      "get": {
        "tags": [
          "Shortlinks"
        ],
        "summary": "Get Short Links",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet Short Links for the current user and their department",
        "operationId": "PanopticApiEndpointsShortLinksGetShortLinksEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetShortLinks_Response"
                },
                "example": {
                  "shortLinks": [],
                  "departmentShortLinks": [],
                  "allShortLinks": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Shortlinks"
        ],
        "summary": "Patch Short Link",
        "description": "**Requires permission:** *StaffMember*\n\nPatch a Short Link",
        "operationId": "PanopticApiEndpointsShortLinksPatchShortLinkEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchShortLink_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Shortlinks"
        ],
        "summary": "Create a short link",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nCreate a short link for a redirect link",
        "operationId": "PanopticApiEndpointsShortLinksPostShortLinkEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostShortLink_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostShortLink_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ShortLinks/{id}/Stats": {
      "get": {
        "tags": [
          "Shortlinks"
        ],
        "summary": "How a short link has been used",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nClick totals, a daily breakdown, and where the follows came from. Automated follows (mail scanners, link previewers) are counted separately and excluded by default. Only the link's creator, or IT, may see this. No IP address is ever returned — none is retained past the location lookup.",
        "operationId": "PanopticApiEndpointsShortLinksGetShortLinkStatsEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includeBots",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetShortLinkStats_Response"
                }
              }
            }
          },
          "403": {
            "description": "Not your link"
          },
          "404": {
            "description": "Not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ServiceDesk/Overview": {
      "get": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - overview",
        "description": "**Requires permission:** *IT*\n\nThe caller's helpdesk landing payload: headline counts, tickets starting soon, tickets needing attention, stale tickets, recent mentions and pinned filter counts. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskGetServiceDeskOverviewEndpoint",
        "parameters": [
          {
            "name": "soonHours",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "staleDays",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetServiceDeskOverview_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ServiceDesk/Stats": {
      "get": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - statistics",
        "description": "**Requires permission:** *IT*\n\nVolume, response and resolution figures over a rolling window, for the caller's own tickets or the whole helpdesk. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskGetServiceDeskStatsEndpoint",
        "parameters": [
          {
            "name": "days",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "everyone",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetServiceDeskStats_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ServiceDesk/Tickets/{ticketId}": {
      "get": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - ticket detail",
        "description": "**Requires permission:** *IT*\n\nOne ticket with its conversation thread, the Staff Lifecycle request behind it (when it has one), the requester's Panoptic record and their recent ticket history. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskGetServiceDeskTicketEndpoint",
        "parameters": [
          {
            "name": "ticketId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetServiceDeskTicket_Response"
                }
              }
            }
          },
          "404": {
            "description": "Ticket not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ServiceDesk/Tickets": {
      "get": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - ticket list",
        "description": "**Requires permission:** *IT*\n\nTickets for a saved filter, or for a built-in scope (mine | unassigned | overdue | scheduled | mentions | all). Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskGetServiceDeskTicketsEndpoint",
        "parameters": [
          {
            "name": "filterId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "scope",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "soonHours",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "staleDays",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetServiceDeskTickets_Response"
                }
              }
            }
          },
          "404": {
            "description": "Filter not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - change a ticket's state",
        "description": "**Requires permission:** *IT*\n\nSets status, priority, assignee or group. Only the fields supplied are changed. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskPatchServiceDeskTicketEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchServiceDeskTicket_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PatchServiceDeskTicket_Response"
                }
              }
            }
          },
          "400": {
            "description": "Nothing to change"
          },
          "502": {
            "description": "Freshservice rejected the change"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ServiceDesk/Messages": {
      "post": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - reply to or note on a ticket",
        "description": "**Requires permission:** *IT*\n\nPosts a public reply or a note. Attributed to the acting agent, so the ticket history names a real person rather than the API key's owner. Optionally applies a status change in the same action. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskPostServiceDeskMessageEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostServiceDeskMessage_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostServiceDeskMessage_Response"
                }
              }
            }
          },
          "400": {
            "description": "Empty body or unknown kind"
          },
          "502": {
            "description": "Freshservice rejected the message"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ServiceDesk/Reference": {
      "get": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - reference data",
        "description": "**Requires permission:** *IT*\n\nAgents, groups, statuses, priorities and the ticket category tree, for the filter builder and the reassign picker. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskGetServiceDeskReferenceEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetServiceDeskReference_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ServiceDesk/Tickets/Bulk": {
      "post": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - change many tickets' state",
        "description": "**Requires permission:** *IT*\n\nApplies one set of changes — status, priority, assignee, group, category — to every selected ticket. Reports per ticket: a partial success is a 200 with the failures named, not an error. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskPostServiceDeskBulkTicketsEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostServiceDeskBulkTickets_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Applied, with per-ticket outcomes",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostServiceDeskBulkTickets_Response"
                }
              }
            }
          },
          "400": {
            "description": "Nothing selected, nothing to change, or too many tickets"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ServiceDesk/Messages/Bulk": {
      "post": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - reply to or note on many tickets",
        "description": "**Requires permission:** *IT*\n\nPosts the same reply or note to every selected ticket, optionally applying a status and category change to each in the same action. Reports per ticket. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskPostServiceDeskBulkMessagesEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostServiceDeskBulkMessages_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Sent, with per-ticket outcomes",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostServiceDeskBulkMessages_Response"
                }
              }
            }
          },
          "400": {
            "description": "Nothing selected, empty body, unknown kind, or too many tickets"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ServiceDesk/CannedResponses": {
      "get": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - list canned responses",
        "description": "**Requires permission:** *IT*\n\nThe caller's own snippets plus any shared by other agents, most-used first. Pass includeFreshservice=true to also mirror the helpdesk's read-only library, and ticketId to resolve merge fields against a real ticket. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskGetServiceDeskCannedResponsesEndpoint",
        "parameters": [
          {
            "name": "includeFreshservice",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          },
          {
            "name": "ticketId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetServiceDeskCannedResponses_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - create or update a canned response",
        "description": "**Requires permission:** *IT*\n\nCreates a snippet, or updates one the caller owns. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskPostServiceDeskCannedResponseEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostServiceDeskCannedResponse_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission, or the response belongs to somebody else"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostServiceDeskCannedResponse_Response"
                }
              }
            }
          },
          "400": {
            "description": "Missing title or body"
          },
          "404": {
            "description": "Canned response not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ServiceDesk/CannedResponses/{id}": {
      "delete": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - delete a canned response",
        "description": "**Requires permission:** *IT*\n\nDeletes a snippet the caller owns. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskDeleteServiceDeskCannedResponseEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission, or the response belongs to somebody else"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteServiceDeskCannedResponse_Response"
                }
              }
            }
          },
          "404": {
            "description": "Canned response not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ServiceDesk/Filters": {
      "get": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - list saved filters",
        "description": "**Requires permission:** *IT*\n\nThe caller's own filters plus any shared by other agents. Pass includeCounts=true to run each one for a live count (one Freshservice call per filter). Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskGetServiceDeskFiltersEndpoint",
        "parameters": [
          {
            "name": "includeCounts",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetServiceDeskFilters_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - create or update a saved filter",
        "description": "**Requires permission:** *IT*\n\nCreates a filter, or updates one the caller owns. Criteria are validated against the field whitelist before saving. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskPostServiceDeskFilterEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostServiceDeskFilter_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission, or the filter belongs to somebody else"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostServiceDeskFilter_Response"
                }
              }
            }
          },
          "400": {
            "description": "Invalid criteria"
          },
          "404": {
            "description": "Filter not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ServiceDesk/Filters/{id}": {
      "delete": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - delete a saved filter",
        "description": "**Requires permission:** *IT*\n\nDeletes a filter the caller owns. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskDeleteServiceDeskFilterEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission, or the filter belongs to somebody else"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteServiceDeskFilter_Response"
                }
              }
            }
          },
          "404": {
            "description": "Filter not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ServiceDesk/Identity": {
      "get": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - who am I on the helpdesk",
        "description": "**Requires permission:** *IT*\n\nHow the caller resolves to a Freshservice agent, and — when they do not — the addresses that were tried plus an agent id derived from a ticket they raised, offered for confirmation. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskGetServiceDeskIdentityEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetServiceDeskIdentity_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - record your Freshservice agent id",
        "description": "**Requires permission:** *IT*\n\nStores the caller's agent id so the module can work without agent-read access on the API key, or clears it. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskPostServiceDeskIdentityEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostServiceDeskIdentity_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostServiceDeskIdentity_Response"
                }
              }
            }
          },
          "400": {
            "description": "No agent id supplied"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ServiceDesk/Mentions/Diagnose/{ticketId}": {
      "get": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - why is this ticket not in my mentions",
        "description": "**Requires permission:** *IT*\n\nReplays the mention sweep's decision for one ticket, note by note, and says which rule excluded each. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskGetServiceDeskMentionDiagnosticEndpoint",
        "parameters": [
          {
            "name": "ticketId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetServiceDeskMentionDiagnostic_Response"
                }
              }
            }
          },
          "404": {
            "description": "Ticket not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ServiceDesk/Mentions/Rescan": {
      "post": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - rescan for mentions",
        "description": "**Requires permission:** *IT*\n\nMoves the sweep's watermark back so the next pass re-reads that period. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskPostServiceDeskMentionRescanEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostServiceDeskMentionRescan_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostServiceDeskMentionRescan_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ServiceDesk/Mentions": {
      "get": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - mention inbox",
        "description": "**Requires permission:** *IT*\n\nTickets the caller was looped into by somebody else's private note, newest first. Built by the background sweep, since Freshservice cannot be queried on note contents. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskGetServiceDeskMentionsEndpoint",
        "parameters": [
          {
            "name": "includeHandled",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetServiceDeskMentions_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ServiceDesk/Mentions/State": {
      "post": {
        "tags": [
          "Servicedesk"
        ],
        "summary": "Service Desk - mark mentions read or dismissed",
        "description": "**Requires permission:** *IT*\n\nMarks the given mentions (or all of the caller's outstanding ones) as read, unread or dismissed. Requires the IT permission.",
        "operationId": "PanopticApiEndpointsServiceDeskPostServiceDeskMentionStateEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostServiceDeskMentionState_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Missing IT permission"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostServiceDeskMentionState_Response"
                }
              }
            }
          },
          "400": {
            "description": "Unknown state"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Me/Classes/SEND": {
      "get": {
        "tags": [
          "Me"
        ],
        "summary": "Get SEND/EAL pupils in my classes",
        "description": "**Requires permission:** *StaffMember*\n\nReturns the pupils in the logged-in teacher's current-year classes who have a SEND or EAL record, with the records attached.",
        "operationId": "PanopticApiEndpointsSendGetSendForSetEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Returned pupils",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSendForSet_Response"
                },
                "example": {
                  "pupils": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get pupils"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Search/Advanced": {
      "post": {
        "tags": [
          "Search"
        ],
        "summary": "Advanced Search",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nSearch with advanced search objects - You can only search for one type at a time. Supply the object you want to search for. Includes supports `Students`, `StaffMembers`, `Contacts`",
        "operationId": "PanopticApiEndpointsSearchPostAdvancedSearchEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostAdvancedSearch_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostAdvancedSearch_Response"
                },
                "example": {
                  "students": [],
                  "misStaff": [],
                  "microsoftStaff": [],
                  "relationships": [],
                  "contacts": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ScienceDisplay": {
      "post": {
        "tags": [
          "Sciencedisplay"
        ],
        "summary": "Get Science Display Details",
        "description": "**Auth:** Anonymous - no token required.\n\nReturns the Science Village display board content for a date (in-house store).",
        "operationId": "PanopticApiEndpointsSciencePostScienceDisplayEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetScienceDisplayDetails_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success - Returned display details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetScienceDisplayDetails_Response"
                },
                "example": {
                  "scienceDisplay": {
                    "B1": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "B2": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "B3": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "B4": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "B5": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "B6": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "B7": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "BText": {
                      "Text": ""
                    },
                    "C1": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "C2": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "C3": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "C4": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "C5": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "C6": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "C7": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "CLib": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "CText": {
                      "Text": ""
                    },
                    "P1": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "P2": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "P3": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "P4": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "P5": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "P6": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "P7": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    },
                    "PText": {
                      "Text": ""
                    },
                    "Project": {
                      "Period1": "",
                      "Period2": "",
                      "Period3": "",
                      "Period4": "",
                      "Period5": "",
                      "Period6": "",
                      "Period7": ""
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get display details"
          }
        }
      },
      "put": {
        "tags": [
          "Sciencedisplay"
        ],
        "summary": "Update Science Display Details",
        "description": "**Requires permission:** *ScienceDisplayManagers*\n\nUpdates one subject's rooms on the Science Village display board for a date (in-house store).",
        "operationId": "PanopticApiEndpointsSciencePutScienceDisplayEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutScienceDisplayDetails_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Display details updated"
          },
          "400": {
            "description": "An Error Occurred - Could not update display details"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/SchoolTrips": {
      "delete": {
        "tags": [
          "Schooltrips"
        ],
        "summary": "Delete School Trip",
        "description": "**Requires permissions:** *IT* or *TripAdmin*\n\nDelete a school trip",
        "operationId": "PanopticApiEndpointsSchoolTripsDeleteSchoolTripEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Schooltrips"
        ],
        "summary": "Get School Trips",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet School Trips with optional pagination, sorting & filtering",
        "operationId": "PanopticApiEndpointsSchoolTripsGetSchoolTripsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSchoolTrips_Response"
                },
                "example": {
                  "schoolTrips": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Schooltrips"
        ],
        "summary": "Patch School Trip",
        "description": "**Requires permissions:** *IT* or *TripAdmin*\n\nPatch a School Trip",
        "operationId": "PanopticApiEndpointsSchoolTripsPatchSchoolTripEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchSchoolTrip_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Schooltrips"
        ],
        "summary": "Post School Trip",
        "description": "**Requires permissions:** *IT* or *TripAdmin*\n\nPost a School Trip",
        "operationId": "PanopticApiEndpointsSchoolTripsPostSchoolTripEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSchoolTrip_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/SchoolPost/Publications": {
      "get": {
        "tags": [
          "Schoolpost"
        ],
        "summary": "Get School Post Publications",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet School Post Publications with optional pagination",
        "operationId": "PanopticApiEndpointsSchoolPostGetSchoolPostPublicationsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSchoolPostPublications_Response"
                },
                "example": {
                  "publications": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/SavedQueries": {
      "delete": {
        "tags": [
          "Savedqueries"
        ],
        "summary": "Delete Saved Query",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nDelete one of the current user's saved queries by id.",
        "operationId": "PanopticApiEndpointsSavedQueriesDeleteSavedQueryEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Saved query deleted"
          },
          "400": {
            "description": "An Error Occurred - not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Savedqueries"
        ],
        "summary": "Get Saved Queries",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nGet the current user's saved Advanced Search queries (private to the caller).",
        "operationId": "PanopticApiEndpointsSavedQueriesGetSavedQueriesEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - The user's saved queries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSavedQueries_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get saved queries"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Savedqueries"
        ],
        "summary": "Patch Saved Query",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nRename a saved query and/or replace its filters. Owner-scoped; names stay unique per user.",
        "operationId": "PanopticApiEndpointsSavedQueriesPatchSavedQueryEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchSavedQuery_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Saved query updated"
          },
          "400": {
            "description": "An Error Occurred - not found or duplicate name"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Savedqueries"
        ],
        "summary": "Post Saved Query",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nSave an Advanced Search query (scope + filters) under a name for the current user. Names must be unique per user.",
        "operationId": "PanopticApiEndpointsSavedQueriesPostSavedQueryEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSavedQuery_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Saved"
          },
          "400": {
            "description": "An Error Occurred - missing name or duplicate name"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/sanctions/{studentNameId}": {
      "get": {
        "tags": [
          "Sanctions"
        ],
        "summary": "Get a student's sanctions",
        "description": "**Requires permission:** *SanctionsAccess*\n\nAll sanctions for the given student (by MIS NAME_ID).",
        "operationId": "PanopticApiEndpointsSanctionsStudentGetStudentSanctionsEndpoint",
        "parameters": [
          {
            "name": "studentNameId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - sanctions returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudentSanctions_Response"
                }
              }
            }
          },
          "400": {
            "description": "An error occurred - could not get sanctions"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/sanctions/summary/{studentNameId}": {
      "get": {
        "tags": [
          "Sanctions"
        ],
        "summary": "Get a student's sanctions summary",
        "description": "**Requires permission:** *SanctionsAccess*\n\nAggregated sanctions summary for the given student (by MIS NAME_ID).",
        "operationId": "PanopticApiEndpointsSanctionsStudentGetStudentSanctionsSummaryEndpoint",
        "parameters": [
          {
            "name": "studentNameId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - summary returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudentSanctionsSummary_Response"
                }
              }
            }
          },
          "400": {
            "description": "An error occurred - could not get summary"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/sanctions/delete": {
      "delete": {
        "tags": [
          "Sanctions"
        ],
        "summary": "Delete sanctions",
        "description": "**Requires permission:** *SanctionsAccess*\n\nDeletes one or more sanctions by id.",
        "operationId": "PanopticApiEndpointsSanctionsManageDeleteSanctionsEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "*/*": {
              "schema": {
                "$ref": "#/components/schemas/DeleteSanctions_Request"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteSanctions_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - sanctions deleted"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An error occurred - could not delete sanctions"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/sanctions/update": {
      "patch": {
        "tags": [
          "Sanctions"
        ],
        "summary": "Update sanctions",
        "description": "**Requires permission:** *SanctionsAccess*\n\nUpdates one or more existing sanctions.",
        "operationId": "PanopticApiEndpointsSanctionsManagePatchSanctionsEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchSanctions_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - sanctions updated"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An error occurred - could not update sanctions"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/sanctions/notify": {
      "post": {
        "tags": [
          "Sanctions"
        ],
        "summary": "Send sanction notification",
        "description": "**Requires permission:** *SanctionsAccess*\n\nEmails the sanction notification for the given sanction(s), CC'ing the senior sanctions team.",
        "operationId": "PanopticApiEndpointsSanctionsManagePostSanctionNotificationEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSanctionNotification_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - notification sent"
          },
          "400": {
            "description": "An error occurred - could not send notification"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/sanctions": {
      "post": {
        "tags": [
          "Sanctions"
        ],
        "summary": "Create sanctions",
        "description": "**Requires permission:** *SanctionsAccess*\n\nCreates one or more sanctions and returns their new ids; may also trigger notification emails.",
        "operationId": "PanopticApiEndpointsSanctionsManagePostSanctionsEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSanctions_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - sanctions created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostSanctions_Response"
                }
              }
            }
          },
          "400": {
            "description": "An error occurred - could not create sanctions"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Sanctions"
        ],
        "summary": "Get sanctions (grid)",
        "description": "**Requires permission:** *SanctionsAccess*\n\nThe filterable/sortable sanctions grid, scoped to the houses and subjects the caller has access to.",
        "operationId": "PanopticApiEndpointsSanctionsGridGetSanctionsV2Endpoint",
        "parameters": [
          {
            "name": "permissionName",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "staffNameId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "studentNameId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "studentYear",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "searchQuery",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "houseCodes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "subjectIds",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "sanctionTypeId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "attendance",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/SanctionAttendance"
            }
          },
          {
            "name": "category",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/SanctionCategory"
            }
          },
          {
            "name": "boardingSanctionType",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          },
          {
            "name": "daySanctionType",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - sanctions returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSanctions_Response"
                }
              }
            }
          },
          "400": {
            "description": "An error occurred - could not get sanctions"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/house/{studentId}": {
      "get": {
        "tags": [
          "House"
        ],
        "summary": "Get a student's house",
        "description": "**Requires permission:** *SanctionsAccess*\n\nResolves a student's boarding/day house from their most-recent enrolment, bridged via the MIS NAME_ID. Returns an empty house object when nothing resolves.",
        "operationId": "PanopticApiEndpointsSanctionsLookupsGetHouseEndpoint",
        "parameters": [
          {
            "name": "studentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - house returned (empty object if none)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetHouse_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/sanctions/types": {
      "get": {
        "tags": [
          "Sanctions"
        ],
        "summary": "Get sanction types",
        "description": "**Requires permission:** *SanctionsAccess*\n\nThe catalogue of sanction types used to populate the sanctions grid and creation screens.",
        "operationId": "PanopticApiEndpointsSanctionsLookupsGetSanctionTypesEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - sanction types returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSanctionTypes_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/sanctions/user": {
      "get": {
        "tags": [
          "Sanctions"
        ],
        "summary": "Get sanctions user bootstrap",
        "description": "**Requires permission:** *SanctionsAccess*\n\nThe create/filter bootstrap for the calling user: their permission rows, accessible houses and subjects, and the create/filter/admin flags that drive the sanctions screens.",
        "operationId": "PanopticApiEndpointsSanctionsLookupsGetSanctionUserEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller has no resolvable staff record"
          },
          "200": {
            "description": "Success - user bootstrap returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSanctionUser_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/sanctions/tallies": {
      "get": {
        "tags": [
          "Sanctions"
        ],
        "summary": "Get sanction tallies",
        "description": "**Requires permission:** *SanctionsAccess*\n\nAggregated sanction tally counts for the sanctions grid, scoped to the caller's permissions.",
        "operationId": "PanopticApiEndpointsSanctionsGridGetSanctionTalliesEndpoint",
        "parameters": [
          {
            "name": "permissionName",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "staffNameId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "studentNameId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "studentYear",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "searchQuery",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "houseCodes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "subjectIds",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "sanctionTypeId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "attendance",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/SanctionAttendance"
            }
          },
          {
            "name": "category",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/SanctionCategory"
            }
          },
          {
            "name": "boardingSanctionType",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          },
          {
            "name": "daySanctionType",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - tallies returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSanctionTallies_Response"
                }
              }
            }
          },
          "400": {
            "description": "An error occurred - could not get tallies"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/rewards/filters": {
      "get": {
        "tags": [
          "Rewards"
        ],
        "summary": "Get filters for rewards",
        "description": "**Requires permission:** *AcademicStaff*\n\nGets filters for rewards, consisting of houses and subjects",
        "operationId": "PanopticApiEndpointsRewardsViewGetFiltersEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFilters_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/rewards/house": {
      "get": {
        "tags": [
          "Rewards"
        ],
        "summary": "Get house rewards",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nGets all commendations and distinctions for a given house",
        "operationId": "PanopticApiEndpointsRewardsViewGetHouseRewardsEndpoint",
        "parameters": [
          {
            "name": "houseId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetHouseRewards_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/rewards/rank": {
      "get": {
        "tags": [
          "Rewards"
        ],
        "summary": "Get rewards rank",
        "description": "**Requires permission:** *AcademicStaff*\n\nGets the rewards rank of a student for commendations and distinctions",
        "operationId": "PanopticApiEndpointsRewardsViewGetRewardsRankEndpoint",
        "parameters": [
          {
            "name": "studentUpi",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetRewardsRank_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/rewards/student": {
      "get": {
        "tags": [
          "Rewards"
        ],
        "summary": "Get all rewards for a student",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *Guardian* or *Parent* or *Student* or *StudentFacing*\n\nGets a list of all rewards for a student",
        "operationId": "PanopticApiEndpointsRewardsViewGetStudentRewardsEndpoint",
        "parameters": [
          {
            "name": "upi",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudentRewards_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/rewards/user": {
      "get": {
        "tags": [
          "Rewards"
        ],
        "summary": "Gets rewards",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nReturns a list of all rewards for a given query",
        "operationId": "PanopticApiEndpointsRewardsViewGetUserRewardsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/rewards": {
      "patch": {
        "tags": [
          "Rewards"
        ],
        "summary": "Patch Reward",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *RewardPrinters* or *StudentFacing*\n\nEdits a reward",
        "operationId": "PanopticApiEndpointsRewardsManagePatchRewardEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchReward_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PatchReward_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Rewards"
        ],
        "summary": "Gets rewards",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nReturns a list of all rewards for a given query",
        "operationId": "PanopticApiEndpointsRewardsManagePostRewardsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostRewards_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "put": {
        "tags": [
          "Rewards"
        ],
        "summary": "Insert or update a reward",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nAdds a new reward or updates an existing reward",
        "operationId": "PanopticApiEndpointsRewardsManagePutRewardEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutReward_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/rewards/counts": {
      "patch": {
        "tags": [
          "Rewards"
        ],
        "summary": "Patch Update Counts",
        "description": "**Requires permissions:** *Admin* or *RewardPrinters*\n\nEdits the counted column for a list of rewards",
        "operationId": "PanopticApiEndpointsRewardsManagePatchUpdateCountsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchUpdateCount_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PatchUpdateCount_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/rewards/printing": {
      "post": {
        "tags": [
          "Rewards"
        ],
        "summary": "Marks rewards as printed",
        "description": "**Requires permission:** *RewardPrinters*\n\nMarks a list of rewards as printed",
        "operationId": "PanopticApiEndpointsRewardsManagePostMarkPrintedEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMarkPrinted_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostMarkPrinted_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/rewards/tally": {
      "post": {
        "tags": [
          "Rewards"
        ],
        "summary": "Gets rewards tallies",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nReturns a list of all rewards tally for a given query",
        "operationId": "PanopticApiEndpointsRewardsManagePostRewardsTallyEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostRewardsTally_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Resend/Emails": {
      "get": {
        "tags": [
          "Resend"
        ],
        "summary": "Get Resend Emails",
        "description": "**Requires permission:** *IT*\n\nGet a list of emails from Resend, filter by the 'after' parameter to only get emails sent after a specific email ID and supply an email id in filter to return a specific email",
        "operationId": "PanopticApiEndpointsResendGetEmailsEndpoint",
        "parameters": [
          {
            "name": "after",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEmails_Response"
                },
                "example": {
                  "emails": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/info/academicYear": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get all reports for an academic year",
        "description": "**Requires permission:** *AllStaff*\n\nReturns every report detail for the given academic year that has at least one step, ordered by the most recently closing step.",
        "operationId": "PanopticApiEndpointsReportsGetAcademicYearReportsEndpoint",
        "parameters": [
          {
            "name": "academicYear",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got reports",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAcademicYearReports_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get reports"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get a list of reports, optionally filtered + with stats",
        "description": "**Requires permission:** *StaffMember*\n\nReturns report details, optionally filtered by year group / current academic year / sport, optionally by report type (All/Ready/Open/Published), and optionally with completion stats.",
        "operationId": "PanopticApiEndpointsReportsGetListOfReportsEndpoint",
        "parameters": [
          {
            "name": "reportType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/GetListOfReports_ReportTypes"
            }
          },
          {
            "name": "year",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "currentYearOnly",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "default": true
            }
          },
          {
            "name": "sportsOnly",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "includeStats",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved reports",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetListOfReports_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get reports"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/{id}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get a report with its steps",
        "description": "**Requires permission:** *StaffMember*\n\nReturns a report's details (with completion stats) and its steps, each step carrying its mark-grade fields (and options) plus its entry count.",
        "operationId": "PanopticApiEndpointsReportsGetReportEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved report",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReport_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get report"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Reports"
        ],
        "summary": "Update a report's details",
        "description": "**Requires permission:** *ReportAdmins*\n\nUpdates a report's name, academic year, year group, publish dates, hidden and sport-allocation flags (port of RPT_UpdateReport; the 'Year ' prefix is stripped from the year group).",
        "operationId": "PanopticApiEndpointsReportsPatchUpdateReportEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "x-name": "UpdateReportRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateReportRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Updated"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not update report"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/viewer": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get the list of reports for a student",
        "description": "**Requires permissions:** *Guardian* or *Leaver* or *Parent* or *StaffMember* or *Student*\n\nReturns the distinct reports a pupil has entries in, with publish flags. Staff may pass any NameId; a student/leaver or parent/guardian is scoped to themselves / their child. Unpublished reports gain a 'Published on ...' suffix for the non-staff audience. Leaver self-view is in the FR-019 in-scope set.",
        "operationId": "PanopticApiEndpointsReportsGetReportListForStudentEndpoint1",
        "parameters": [
          {
            "name": "nameId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved reports",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportList_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get reports"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/viewer/{nameId}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get the list of reports for a student",
        "description": "**Requires permissions:** *Guardian* or *Leaver* or *Parent* or *StaffMember* or *Student*\n\nReturns the distinct reports a pupil has entries in, with publish flags. Staff may pass any NameId; a student/leaver or parent/guardian is scoped to themselves / their child. Unpublished reports gain a 'Published on ...' suffix for the non-staff audience. Leaver self-view is in the FR-019 in-scope set.",
        "operationId": "PanopticApiEndpointsReportsGetReportListForStudentEndpoint2",
        "parameters": [
          {
            "name": "nameId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved reports",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportList_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get reports"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Report/Stats": {
      "get": {
        "tags": [
          "Report"
        ],
        "summary": "Get report stats for the current staff member",
        "description": "**Requires permission:** *StaffMember*\n\nReturns the count of the current staff member's report entries that are open and due to publish (Total), and how many of those are complete (Completed).",
        "operationId": "PanopticApiEndpointsReportsGetReportStatsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized - User not found"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - basic report stats",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportStats_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get report stats"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/info/years": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get the academic years with reports",
        "description": "**Requires permission:** *AllStaff*\n\nReturns the distinct academic years that have at least one report, newest first.",
        "operationId": "PanopticApiEndpointsReportsGetReportYearsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got list of years",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportYears_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not retrieve years"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Reports/Teachers": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get teachers who have reports in a year (legacy GET /Reports/Teachers)",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport*\n\nDistinct list of writing teachers across the academic year's report entries, with names resolved against the canonical model. Port of the legacy v2 GetTeachersWithReports endpoint.",
        "operationId": "PanopticApiEndpointsReportsGetTeachersWithReportsEndpoint",
        "parameters": [
          {
            "name": "academicYear",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got teachers",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTeachersWithReports_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get teachers"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/report/setup/OneOff": {
      "post": {
        "tags": [
          "Report"
        ],
        "summary": "Create a one-off report",
        "description": "**Requires permission:** *StaffMember*\n\nInserts one report entry per supplied pupil into the given step (port of RPT_InsertEntry), attributed to the signed-in staff member's MIS STAFF_ID.",
        "operationId": "PanopticApiEndpointsReportsPostCreateOneOffReportEndpoint",
        "requestBody": {
          "x-name": "CreateOneOffReportRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOneOffReportRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not create"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/report/setup": {
      "post": {
        "tags": [
          "Report"
        ],
        "summary": "Create a full school report (legacy /report/setup)",
        "description": "**Requires permission:** *ReportAdmins*\n\nCreates a report, its steps and each step's mark-grade fields/options, then expands each step's entry groups (sets/houses/tutor-groups/individual) to per-pupil entries with seeded mark-grades via the canonical enrolment bridge. Port of the legacy v0 RPT_Insert* chain.",
        "operationId": "PanopticApiEndpointsReportsPostCreateReportEndpoint",
        "requestBody": {
          "x-name": "CreateReportRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReportRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not create report"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/steps/staff/review": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Get the entries to review for a pupil within a report step",
        "description": "**Requires permission:** *StaffMember*\n\nReturns the pupil's other entries in the same report at the same step number (with the authoring staff member's name and mark grades), so a reviewer can read across subjects.",
        "operationId": "PanopticApiEndpointsReportsPostReportsToReviewEndpoint",
        "requestBody": {
          "x-name": "ReportsToReviewRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReportsToReviewRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved entries to review",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportsToReview_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get entries to review"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/templates/{id}": {
      "delete": {
        "tags": [
          "Reports"
        ],
        "summary": "Delete a report template",
        "description": "**Requires permission:** *ReportAdmins*",
        "operationId": "PanopticApiEndpointsReportsTemplatesDeleteReportTemplateEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Template deleted"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not found - Template does not exist"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get a report template + its parsed structure",
        "description": "**Requires permission:** *ReportAdmins*\n\nReturns a single template and its deserialised structure (steps, mark-grade fields/options, step group selections and report info HTML) so the report-setup flow can pre-fill a new report.",
        "operationId": "PanopticApiEndpointsReportsTemplatesGetReportTemplateEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Template",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportTemplate_Response"
                }
              }
            }
          },
          "404": {
            "description": "Not found - Template does not exist"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/templates": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "List report templates",
        "description": "**Requires permission:** *ReportAdmins*\n\nReturns the available report templates (newest first) for the report-setup 'start from template' picker.",
        "operationId": "PanopticApiEndpointsReportsTemplatesGetReportTemplatesEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Templates",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportTemplates_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/templates/from-report": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Create a report template from an existing report",
        "description": "**Requires permission:** *ReportAdmins*\n\nCaptures the whole structure of an existing report (steps, mark-grade fields/options, step group selections and report info HTML) into a reusable template, minus the per-pupil entries. The template can then pre-fill a brand-new report.",
        "operationId": "PanopticApiEndpointsReportsTemplatesPostCreateTemplateFromReportEndpoint",
        "parameters": [
          {
            "name": "reportId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Template created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportTemplateSummary"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not create template"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/step": {
      "delete": {
        "tags": [
          "Reports"
        ],
        "summary": "Delete a report step + its entries (legacy DELETE /reports/steps)",
        "description": "**Requires permission:** *ReportAdmins*\n\nRemoves the step, its entries and their mark grades. Port of the legacy v2 DeleteStep endpoint. Exposed at both /reports/step and /reports/steps (the Flutter setup editor and step viewer call the plural and singular forms respectively).",
        "operationId": "PanopticApiEndpointsReportsStepsDeleteReportStepEndpoint1",
        "parameters": [
          {
            "name": "stepId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Deleted"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not delete step"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/steps": {
      "delete": {
        "tags": [
          "Reports"
        ],
        "summary": "Delete a report step + its entries (legacy DELETE /reports/steps)",
        "description": "**Requires permission:** *ReportAdmins*\n\nRemoves the step, its entries and their mark grades. Port of the legacy v2 DeleteStep endpoint. Exposed at both /reports/step and /reports/steps (the Flutter setup editor and step viewer call the plural and singular forms respectively).",
        "operationId": "PanopticApiEndpointsReportsStepsDeleteReportStepEndpoint2",
        "parameters": [
          {
            "name": "stepId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Deleted"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not delete step"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "put": {
        "tags": [
          "Reports"
        ],
        "summary": "Create/update a report's steps + entries (legacy PUT /reports/steps)",
        "description": "**Requires permission:** *ReportAdmins*\n\nUpserts each step and its mark-grade fields/options, and (when CreateEntries=true) expands every step's entry groups (sets/houses/tutor-groups/individual) to per-pupil entries with seeded mark grades via the canonical enrolment bridge. Port of the legacy v2 PutCreateReportSteps endpoint.",
        "operationId": "PanopticApiEndpointsReportsStepsPutCreateReportStepsEndpoint",
        "parameters": [
          {
            "name": "createEntries",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "x-name": "body",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReportStepsBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Success - Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not create steps"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/steps/allopen": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get all open report steps",
        "description": "**Requires permission:** *StaffMember*\n\nReturns every report step whose window is open and whose report has not yet published, each carrying its report's name, academic year and year group.",
        "operationId": "PanopticApiEndpointsReportsStepsGetAllOpenStepsEndpoint",
        "parameters": [
          {
            "name": "music",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved steps",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStaffSteps_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get steps"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/steps/reportsinstep/{stepId}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get the staff progress for a report step",
        "description": "**Requires permissions:** *MusicAdmins* or *ReportAdmins*\n\nReturns, per teacher with entries in the step, their total/complete entry counts, the set codes they are writing for, and their name + staff code (port of RPT_A_StaffForSteps).",
        "operationId": "PanopticApiEndpointsReportsStepsGetAllReportsInStepByIdEndpoint",
        "parameters": [
          {
            "name": "stepId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "music",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved staff progress",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportsInStep_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get staff progress"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/steps/all": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get all report steps",
        "description": "**Requires permission:** *ReportAdmins*\n\nReturns every report step. Locked to report admins (the legacy route was Roles(\"NoOne\")).",
        "operationId": "PanopticApiEndpointsReportsStepsGetAllStepsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved steps",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStaffSteps_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get steps"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/steps/staff": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get the active report steps for the signed-in staff member",
        "description": "**Requires permission:** *StaffMember*\n\nReturns the open report steps the current staff member has entries in, each carrying the report name and the staff member's total/complete entry counts for that step.",
        "operationId": "PanopticApiEndpointsReportsStepsGetStaffStepsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved steps",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStaffSteps_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get steps"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/step/{id}": {
      "patch": {
        "tags": [
          "Reports"
        ],
        "summary": "Update a report step (legacy PATCH /reports/step/{Id})",
        "description": "**Requires permission:** *ReportAdmins*\n\nUpdates one step's overwrite name, number, open/close dates, hidden flag and AI-checker flag. Port of the legacy v0 RPT_UpdateStep SP.",
        "operationId": "PanopticApiEndpointsReportsStepsPatchUpdateReportStepEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "x-name": "UpdateReportStepRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateReportStepRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Updated"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not update step"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Reports/Sport/Allocations": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get existing sport report allocations (legacy GET /Reports/Sport/Allocations)",
        "description": "**Requires permission:** *StaffMember*\n\nReturns one allocation row per existing entry (staff + pupil) for the report + sport entry name, with names resolved against the canonical model. Port of the legacy v2 GetSportReportAllocations endpoint.",
        "operationId": "PanopticApiEndpointsReportsSportGetSportReportAllocationsEndpoint",
        "parameters": [
          {
            "name": "reportId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "entryName",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got allocations",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSportReportAllocations_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get allocations"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/Sport": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Create or update sport report allocations (legacy POST /reports/Sport)",
        "description": "**Requires permission:** *StaffMember*\n\nFor the report's first step, upserts one entry per (staff, pupil) pair in the supplied rows for the given sport entry name. Port of the legacy v2 PostCreateSportReports endpoint.",
        "operationId": "PanopticApiEndpointsReportsSportPostCreateSportReportsEndpoint",
        "requestBody": {
          "x-name": "CreateSportReportsRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSportReportsRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Entries created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not create entries"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/notes": {
      "delete": {
        "tags": [
          "Reports"
        ],
        "summary": "Delete a report setup note",
        "description": "**Requires permission:** *ReportAdmins*\n\nRemoves a report-setup note by id (no-op if it does not exist).",
        "operationId": "PanopticApiEndpointsReportsSetupDeleteReportSetupNoteEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Note deleted"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not delete note"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get setup notes for a report",
        "description": "**Requires permission:** *ReportAdmins*\n\nReturns the report-setup notes for a given report name (case-insensitive).",
        "operationId": "PanopticApiEndpointsReportsSetupGetReportSetupNotesEndpoint",
        "parameters": [
          {
            "name": "reportName",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got notes",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportSetupNotes_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get notes"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "put": {
        "tags": [
          "Reports"
        ],
        "summary": "Add or edit a report setup note",
        "description": "**Requires permission:** *ReportAdmins*\n\nUpserts a report-setup note, stamping the current user's name and the update time (port of the legacy Update with User.ClaimValue(\"Name\")).",
        "operationId": "PanopticApiEndpointsReportsSetupPutReportSetupNoteEndpoint",
        "requestBody": {
          "x-name": "PutReportSetupNoteRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutReportSetupNoteRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Note saved"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not update"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/info/{reportId}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get a report's top/bottom HTML by route id (anonymous)",
        "description": "**Auth:** Anonymous - no token required.\n\nReturns the report text that appears at the top and bottom of a report for parents and students. Backfills HTMLBottom from the defaults row when blank. Anonymous, matching legacy.",
        "operationId": "PanopticApiEndpointsReportsSetupGetInfoForReportEndpoint",
        "parameters": [
          {
            "name": "reportId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success - Got report info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetInfoForReport_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get report info"
          }
        }
      }
    },
    "/reports/details": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get a report's details + steps (legacy GET /reports/details)",
        "description": "**Requires permission:** *ReportAdmins*\n\nReturns the report detail and its steps for the report-setup editor. Port of the legacy v2 GetReportDetails endpoint. Steps are returned as the base ReportSteps shape (the Flutter ReportStepRequest extends it; entry-group/mark-grade-form fields default to null).",
        "operationId": "PanopticApiEndpointsReportsSetupGetReportDetailsEndpoint",
        "parameters": [
          {
            "name": "reportId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got report details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportDetails_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get report details"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Reports/Details/Year": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get Report Details for a Student's Year",
        "description": "**Requires permission:** *StaffMember*\n\nReturns the distinct reports that contain written entries for a student in an academic year.",
        "operationId": "PanopticApiEndpointsReportsSetupGetReportDetailsForStudentYearEndpoint",
        "parameters": [
          {
            "name": "studentNameId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "academicYear",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Returned report details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportDetailsForStudentYear_Response"
                },
                "example": {
                  "reports": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get report details"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/info/defaults": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get the default report info",
        "description": "**Requires permission:** *AllStaff*\n\nReturns the single defaults row: default top/bottom HTML and min/max char counts.",
        "operationId": "PanopticApiEndpointsReportsSetupGetReportInfoDefaultsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got defaults",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportInfoDefaults_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get defaults"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/info": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get a report's top/bottom HTML",
        "description": "**Requires permission:** *AllStaff*\n\nReturns the stored top/bottom report HTML for a report, backfilling either piece from the defaults row when it is blank.",
        "operationId": "PanopticApiEndpointsReportsSetupGetReportInfoEndpoint",
        "parameters": [
          {
            "name": "reportId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got report info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportInfo_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Failed to get report info"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "put": {
        "tags": [
          "Reports"
        ],
        "summary": "Update a report's top/bottom HTML",
        "description": "**Requires permission:** *ReportAdmins*\n\nUpdates the report text that appears at the top and bottom of a report for parents and students (port of RPT_INFO_UpdateForReport: upsert keyed on ReportId).",
        "operationId": "PanopticApiEndpointsReportsSetupPutInfoForReportEndpoint",
        "requestBody": {
          "x-name": "UpdateInfoForReportRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateInfoForReportRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Updated report info"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not update report info"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/info/steps": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get all steps for a report",
        "description": "**Requires permission:** *AllStaff*\n\nReturns every step belonging to the given report id.",
        "operationId": "PanopticApiEndpointsReportsSetupGetReportInfoStepsEndpoint",
        "parameters": [
          {
            "name": "reportId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got report steps",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportInfoSteps_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Failed to get report steps"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/mark-grades/templates": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get mark-grade field-option templates",
        "description": "**Requires permission:** *ReportAdmins*\n\nReturns all stored mark-grade field-option templates used to seed a new report step's grades.",
        "operationId": "PanopticApiEndpointsReportsSetupGetReportMarkGradesFieldsOptionsTemplatesEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got templates",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportMarkGradesFieldsOptionsTemplates_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get templates"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Report/Matrix": {
      "get": {
        "tags": [
          "Report"
        ],
        "summary": "Get the report matrix templates",
        "description": "**Requires permission:** *StaffMember*\n\nReturns the mark-grade matrix rows grouped by template name (lower/upper bound -> value).",
        "operationId": "PanopticApiEndpointsReportsSetupGetReportMatrixEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got matrices",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportMatrix_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get matrices"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/field/{id}": {
      "patch": {
        "tags": [
          "Reports"
        ],
        "summary": "Update a report mark-grade field",
        "description": "**Requires permission:** *ReportAdmins*\n\nUpdates a mark-grade field's name and hidden flag (port of RPT_UpdateMarkGradeFieldForStep).",
        "operationId": "PanopticApiEndpointsReportsSetupPatchUpdateReportFieldEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "x-name": "UpdateReportFieldRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateReportFieldRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Updated"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not update field"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/setup": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Create a report draft",
        "description": "**Requires permission:** *ReportAdmins*\n\nPersists a report detail row (created in draft from the setup screen). Port of the legacy v2 PostCreateReportDetails (Update upsert on ReportDetail).",
        "operationId": "PanopticApiEndpointsReportsSetupPostCreateReportDetailsEndpoint",
        "requestBody": {
          "x-name": "CreateReportDetailsRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReportDetailsRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Report created as draft (returns the new report id)"
          },
          "400": {
            "description": "An Error Occurred - Could not create report"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/report/setup/Houses": {
      "get": {
        "tags": [
          "Report"
        ],
        "summary": "Get houses for report setup (legacy /report/setup/Houses)",
        "description": "**Requires permission:** *ReportAdmins*\n\nLegacy report-setup house lookup. Returns the MIS house shape with the housemaster's int STAFF_ID. Awaiting the canonical pupil/staff bridge (T323d).",
        "operationId": "PanopticApiEndpointsReportsSetupGetReportSetupHousesEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got houses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportSetupHouses_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get houses"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/report/setup/Staff": {
      "get": {
        "tags": [
          "Report"
        ],
        "summary": "Get staff for report setup (legacy /report/setup/Staff)",
        "description": "**Requires permission:** *ReportAdmins*\n\nLegacy report-setup staff lookup. Returns the MIS staff shape with int STAFF_ID and the staff member's subjects. Awaiting the canonical pupil/staff bridge (T323d).",
        "operationId": "PanopticApiEndpointsReportsSetupGetReportSetupStaffEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got staff",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportSetupStaff_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get staff"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/report/setup/TutorGroups": {
      "get": {
        "tags": [
          "Report"
        ],
        "summary": "Get tutor groups for report setup (legacy /report/setup/TutorGroups)",
        "description": "**Requires permission:** *ReportAdmins*\n\nLegacy report-setup tutor-group lookup. Returns the MIS tutor-group shape with the tutor's int STAFF_ID. Awaiting the canonical pupil/staff bridge (T323d).",
        "operationId": "PanopticApiEndpointsReportsSetupGetReportSetupTutorGroupsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got tutor groups",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportSetupTutorGroups_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get tutor groups"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/report/setup/sets": {
      "get": {
        "tags": [
          "Report"
        ],
        "summary": "Get subject sets for report setup (legacy /report/setup/sets + /sets/all)",
        "description": "**Requires permission:** *ReportAdmins*\n\nLegacy report-setup subject-set lookup. Returns each set with its report-writer teachers (int STAFF_ID). Awaiting the canonical pupil/staff bridge (T323d).",
        "operationId": "PanopticApiEndpointsReportsSetupGetReportSetupSubjectSetsEndpoint1",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got sets",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportSetupSubjectSets_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get sets"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/report/setup/sets/all": {
      "get": {
        "tags": [
          "Report"
        ],
        "summary": "Get subject sets for report setup (legacy /report/setup/sets + /sets/all)",
        "description": "**Requires permission:** *ReportAdmins*\n\nLegacy report-setup subject-set lookup. Returns each set with its report-writer teachers (int STAFF_ID). Awaiting the canonical pupil/staff bridge (T323d).",
        "operationId": "PanopticApiEndpointsReportsSetupGetReportSetupSubjectSetsEndpoint2",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got sets",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportSetupSubjectSets_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get sets"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/reallocation/{stepId}/{staffId}/{entryName}": {
      "delete": {
        "tags": [
          "Reports"
        ],
        "summary": "Delete a staff member's set of reports (legacy DELETE /reports/reallocation/{StepId}/{StaffId}/{EntryName})",
        "description": "**Requires permission:** *ReportAdmins*\n\nRemoves every entry (and its mark grades) in a step + writing teacher + entry-name group. Port of the legacy RPT_RA_DeleteStaffStep SP.",
        "operationId": "PanopticApiEndpointsReportsReallocationDeleteStaffStepEndpoint",
        "parameters": [
          {
            "name": "stepId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "staffId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "entryName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Deleted"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not delete"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/reallocation/students": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get a student's entries for a step (legacy /reports/reallocation/students?StudentId=&StepId=)",
        "description": "**Requires permission:** *ReportAdmins*\n\nReturns the report entries for a pupil (by MIS NAME_ID) within a step, each carrying the writing teacher's name. Port of the legacy v2 GetEntriesForStudent endpoint.",
        "operationId": "PanopticApiEndpointsReportsReallocationGetEntriesForStudentEndpoint",
        "parameters": [
          {
            "name": "studentId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "stepId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got entries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEntriesForStudent_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get entries"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Reports"
        ],
        "summary": "Add/remove students from a reallocation group (legacy PATCH /reports/reallocation/students)",
        "description": "**Requires permission:** *ReportAdmins*\n\nRemoves the supplied entries and inserts a new entry per added pupil, seeding each new entry's mark-grades from the group's existing grade fields. Port of the legacy RPT_RA_MarkGradesForStep / RPT_RA_DeleteEntry / RPT_InsertEntry / RPT_InsertMarkGrade chain.",
        "operationId": "PanopticApiEndpointsReportsReallocationPatchReallocateStudentsEndpoint",
        "requestBody": {
          "x-name": "ReallocateStudentRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReallocateStudentRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Reallocated"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not reallocate"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/reallocation/steps/{reportId}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get staff steps ready to reallocate (legacy /reports/reallocation/steps/{ReportId})",
        "description": "**Requires permission:** *ReportAdmins*\n\nGroups the report's entries by step + writing teacher + entry name, with completion counts. Port of the legacy RPT_RA_GetReportsByStaffForId SP, rebuilt from RPT_ENTRIES with the staff name resolved via the canonical staff bridge.",
        "operationId": "PanopticApiEndpointsReportsReallocationGetStaffReallocationStepsEndpoint",
        "parameters": [
          {
            "name": "reportId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got steps",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStaffReallocationSteps_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get steps"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/reallocation/students/{stepId}/{staffId}/{entryName}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get students for a reallocation group (legacy /reports/reallocation/students/{StepId}/{StaffId}/{EntryName})",
        "description": "**Requires permission:** *ReportAdmins*\n\nReturns the report entries (with student names) for a step + writing teacher + entry name. Port of the legacy RPT_RA_EntriesForStep SP, rebuilt from RPT_ENTRIES with the canonical student bridge.",
        "operationId": "PanopticApiEndpointsReportsReallocationGetStudentsForReportStepEndpoint",
        "parameters": [
          {
            "name": "stepId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "staffId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "entryName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got students",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudentsForReportStep_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get students"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/reallocation": {
      "patch": {
        "tags": [
          "Reports"
        ],
        "summary": "Reallocate a staff member's entries to another teacher (legacy PATCH /reports/reallocation)",
        "description": "**Requires permission:** *ReportAdmins*\n\nMoves every entry in a step + entry-name group from the old writing teacher to the new one (resolved from the new teacher's email -> MIS STAFF_ID). Port of the legacy RPT_RA_StaffEntries SP.",
        "operationId": "PanopticApiEndpointsReportsReallocationPatchReallocateTeacherEndpoint",
        "requestBody": {
          "x-name": "ReallocateTeacherRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReallocateTeacherRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Reallocated"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not reallocate"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/reallocation/switch": {
      "patch": {
        "tags": [
          "Reports"
        ],
        "summary": "Switch the teacher for a single entry (legacy PATCH /reports/reallocation/switch)",
        "description": "**Requires permission:** *ReportAdmins*\n\nSets one entry's StaffId (and optionally its entry name). Port of the legacy v2 PatchSwitchTeacher endpoint. StaffNameId carries the new MIS STAFF_ID.",
        "operationId": "PanopticApiEndpointsReportsReallocationPatchSwitchTeacherEndpoint",
        "parameters": [
          {
            "name": "entryId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "staffNameId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "staffUpi",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "entryName",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Switched"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not switch teacher"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/reallocation/set": {
      "put": {
        "tags": [
          "Reports"
        ],
        "summary": "Add a whole subject set to a report (legacy PUT /reports/reallocation/set)",
        "description": "**Requires permission:** *ReportAdmins*\n\nInserts one entry per pupil in the set (resolved via the canonical Class/ClassStudents bridge) attributed to the chosen teacher, optionally seeding each entry's mark-grades from the step's grade fields. Port of the legacy RPT_RA_MarkGradesForReport + RPT_InsertEntry/RPT_InsertMarkGrade chain.",
        "operationId": "PanopticApiEndpointsReportsReallocationPutCreateEntriesForSetEndpoint",
        "requestBody": {
          "x-name": "AddNewSetToReportRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddNewSetToReportRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Added"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not add the set"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/steps/staff/entry/{entryId}": {
      "delete": {
        "tags": [
          "Reports"
        ],
        "summary": "Delete a single report entry (admin)",
        "description": "**Requires permission:** *ReportAdmins*\n\nRemoves one report entry (by id) along with its mark grades and any AI-correction records. Report-admin only; used by the report entry screen's admin delete action.",
        "operationId": "PanopticApiEndpointsReportsEntriesDeleteReportEntryEndpoint",
        "parameters": [
          {
            "name": "entryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Deleted"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not delete"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get a single report entry with its mark grades + writer stats",
        "description": "**Requires permission:** *StaffMember*\n\nReturns the report entry (with grades and field options) plus, for tutor/house steps, the pupil's commendation/distinction and book-reading counts (this term and this year).",
        "operationId": "PanopticApiEndpointsReportsEntriesGetReportEntryEndpoint",
        "parameters": [
          {
            "name": "entryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved entry",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportEntry_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get entry"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/steps/entries/{stepId}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get the entries a staff member has to write for a step",
        "description": "**Requires permission:** *StaffMember*\n\nReturns the report entries for a step, scoped to the signed-in staff member (or the given MIS staff code), with student/subject/grades resolved and AI-correction state.",
        "operationId": "PanopticApiEndpointsReportsEntriesGetEntriesForStepEndpoint1",
        "parameters": [
          {
            "name": "stepId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "isInterim",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          },
          {
            "name": "staffCode",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved entries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStaffEntries_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get entries"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/steps/entries/{stepId}/{staffCode}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get the entries a staff member has to write for a step",
        "description": "**Requires permission:** *StaffMember*\n\nReturns the report entries for a step, scoped to the signed-in staff member (or the given MIS staff code), with student/subject/grades resolved and AI-correction state.",
        "operationId": "PanopticApiEndpointsReportsEntriesGetEntriesForStepEndpoint2",
        "parameters": [
          {
            "name": "stepId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "staffCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "isInterim",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved entries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStaffEntries_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get entries"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Reports/Entries": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get a report's entries (legacy GET /Reports/Entries)",
        "description": "**Requires permission:** *StaffMember*\n\nFlat list of entries for a report, optionally filtered by set name, with names/subject/grades resolved against the canonical model. Port of the legacy v2 GetReportEntries endpoint.",
        "operationId": "PanopticApiEndpointsReportsEntriesGetReportEntriesEndpoint",
        "parameters": [
          {
            "name": "reportId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "entryName",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved entries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportEntriesForReport_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not retrieve entries"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/viewer/Form/{form}/{year}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get report entries for a form/year",
        "description": "**Requires permission:** *StaffMember*\n\nReturns the report entries for pupils in the given tutor-group form for the given academic year, with student, subject, step and mark grades resolved against the canonical model.",
        "operationId": "PanopticApiEndpointsReportsEntriesGetReportEntriesForFormEndpoint",
        "parameters": [
          {
            "name": "form",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved entries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportEntries_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get entries"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/viewer/{reportId}/entries": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get a student's entries for a report",
        "description": "**Requires permissions:** *Guardian* or *Leaver* or *Parent* or *StaffMember* or *Student*\n\nReturns the report entries for a single pupil in a report. Staff see all entries; a student/leaver sees only their own (published to students); a parent/guardian only their child's (published to parents). Leaver self-view is in the FR-019 in-scope set.",
        "operationId": "PanopticApiEndpointsReportsEntriesGetReportEntriesForReportEndpoint1",
        "parameters": [
          {
            "name": "reportId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "nameId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved entries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportEntries_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get entries"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/viewer/{nameId}/{reportId}/entries": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get a student's entries for a report",
        "description": "**Requires permissions:** *Guardian* or *Leaver* or *Parent* or *StaffMember* or *Student*\n\nReturns the report entries for a single pupil in a report. Staff see all entries; a student/leaver sees only their own (published to students); a parent/guardian only their child's (published to parents). Leaver self-view is in the FR-019 in-scope set.",
        "operationId": "PanopticApiEndpointsReportsEntriesGetReportEntriesForReportEndpoint2",
        "parameters": [
          {
            "name": "nameId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "reportId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved entries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportEntries_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get entries"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/viewer/Set/{setCode}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get report entries for a subject set",
        "description": "**Requires permission:** *StaffMember*\n\nReturns the current-academic-year report entries whose set code matches the supplied set, with the writing teacher's name, subject and mark grades resolved against the canonical model.",
        "operationId": "PanopticApiEndpointsReportsEntriesGetReportEntriesForSetEndpoint",
        "parameters": [
          {
            "name": "setCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved entries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportEntries_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get entries"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/viewer/Teacher/{staffId}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get report entries written by a teacher",
        "description": "**Requires permission:** *StaffMember*\n\nReturns the current-academic-year report entries authored by the given MIS staff id, with student, subject and mark grades resolved against the canonical model.",
        "operationId": "PanopticApiEndpointsReportsEntriesGetReportEntriesForTeacherEndpoint",
        "parameters": [
          {
            "name": "staffId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved entries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportEntries_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get entries"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/viewer/TutorGroup/{tutorGroup}/{reportId}/entries": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get report entries for a tutor group, grouped per pupil",
        "description": "**Requires permission:** *StaffMember*\n\nReturns the entries for a report for all pupils in the given tutor-group form, grouped by pupil, with student, subject, step and mark grades resolved against the canonical model.",
        "operationId": "PanopticApiEndpointsReportsEntriesGetReportEntriesForTutorGroupEndpoint",
        "parameters": [
          {
            "name": "tutorGroup",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "reportId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved entries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSchoolReportsForTutorGroup_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get entries"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/steps/staff/entries/{stepId}/{isInterim}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get a staff member's entries for a step (with interim flag)",
        "description": "**Requires permission:** *StaffMember*\n\nLegacy /reports/steps/staff/entries route: returns the report entries for a step scoped to the signed-in staff member (or the given MIS staff code). The IsInterim flag is accepted for route parity but does not change the result set.",
        "operationId": "PanopticApiEndpointsReportsEntriesGetStaffEntriesEndpoint1",
        "parameters": [
          {
            "name": "stepId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "isInterim",
            "in": "path",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "staffCode",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved entries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStaffEntries_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get entries"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/steps/staff/entries/{stepId}/{isInterim}/{staffCode}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get a staff member's entries for a step (with interim flag)",
        "description": "**Requires permission:** *StaffMember*\n\nLegacy /reports/steps/staff/entries route: returns the report entries for a step scoped to the signed-in staff member (or the given MIS staff code). The IsInterim flag is accepted for route parity but does not change the result set.",
        "operationId": "PanopticApiEndpointsReportsEntriesGetStaffEntriesEndpoint2",
        "parameters": [
          {
            "name": "stepId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "isInterim",
            "in": "path",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "staffCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved entries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStaffEntries_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get entries"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/steps/{stepId}/{staffId}/complete": {
      "patch": {
        "tags": [
          "Reports"
        ],
        "summary": "Mark all of a staff member's entries in a step complete",
        "description": "**Requires permission:** *ReportAdmins*\n\nMarks every entry in the step for the given MIS staff id as complete (port of RPT_A_MarkAllAsComplete). Report-admin only.",
        "operationId": "PanopticApiEndpointsReportsEntriesPatchCompleteAllForStaffEndpoint",
        "parameters": [
          {
            "name": "stepId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "staffId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Marked complete"
          },
          "400": {
            "description": "An Error Occurred - Could not mark complete"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/steps/staff/entry": {
      "patch": {
        "tags": [
          "Reports"
        ],
        "summary": "Mark a report entry as complete",
        "description": "**Requires permission:** *StaffMember*\n\nMarks the given report entry complete (port of RPT_CompleteReport). No-op when Complete=false.",
        "operationId": "PanopticApiEndpointsReportsEntriesPatchCompleteReportEntryEndpoint",
        "parameters": [
          {
            "name": "reportEntryId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "x-name": "CompleteReportEntryRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompleteReportEntryRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Marked complete"
          },
          "400": {
            "description": "An Error Occurred - Could not mark complete"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "put": {
        "tags": [
          "Reports"
        ],
        "summary": "Save a report entry (text + complete flag + mark grades)",
        "description": "**Requires permission:** *StaffMember*\n\nCleans the entry HTML, saves the text and complete flag, and persists any supplied mark grade values. Does not run the AI checker (the Flutter client patches that separately).",
        "operationId": "PanopticApiEndpointsReportsEntriesPutSubmitReportEntryEndpoint",
        "requestBody": {
          "x-name": "SubmitReportEntryRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitReportEntryRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Saved"
          },
          "400": {
            "description": "An Error Occurred - Could not save entry"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/steps/staff/other": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Get a pupil's other report entries at the same step number",
        "description": "**Requires permission:** *StaffMember*\n\nReturns the pupil's entries from other (recently published) reports at the same step number, with their mark grades, so the writer can see what other teachers have written.",
        "operationId": "PanopticApiEndpointsReportsEntriesPostOtherReportEntriesEndpoint",
        "requestBody": {
          "x-name": "OtherReportEntryRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OtherReportEntryRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved other entries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetOtherReportEntries_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get other entries"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/steps/staff/bulk": {
      "put": {
        "tags": [
          "Reports"
        ],
        "summary": "Save many report entries at once",
        "description": "**Requires permission:** *StaffMember*\n\nBulk variant of the save endpoint: cleans each entry's HTML, saves its text + complete flag, and persists supplied mark grade values.",
        "operationId": "PanopticApiEndpointsReportsEntriesPutSubmitReportEntryBulkEndpoint",
        "requestBody": {
          "x-name": "SubmitReportEntryBulkRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitReportEntryBulkRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Saved"
          },
          "400": {
            "description": "An Error Occurred - Could not save entries"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Reports/Delegation": {
      "delete": {
        "tags": [
          "Reports"
        ],
        "summary": "Delete a report delegation (legacy DELETE /Reports/Delegation)",
        "description": "**Requires permission:** *HoD*\n\nRemoves a report-writing delegation by id. Port of the legacy v2 DeleteDelegation endpoint.",
        "operationId": "PanopticApiEndpointsReportsDelegationDeleteDelegationEndpoint",
        "requestBody": {
          "x-name": "DeleteDelegationRequest",
          "description": "",
          "content": {
            "*/*": {
              "schema": {
                "$ref": "#/components/schemas/DeleteDelegationRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteDelegationRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Deleted"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not delete delegation"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get report delegations (legacy GET /Reports/Delegation)",
        "description": "**Requires permission:** *StaffMember*\n\nReturns the report delegations filtered by staff email and/or subject code. At least one filter is required. Port of the legacy v2 GetDelegations endpoint.",
        "operationId": "PanopticApiEndpointsReportsDelegationGetDelegationsEndpoint",
        "parameters": [
          {
            "name": "staffEmail",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "subjectCode",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got delegations",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetDelegations_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get delegations"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Create a report delegation (legacy POST /Reports/Delegation)",
        "description": "**Requires permission:** *HoD*\n\nAdds a new report-writing delegation (staff email + subject code, delegated by). Port of the legacy v2 PostCreateDelegation endpoint.",
        "operationId": "PanopticApiEndpointsReportsDelegationPostCreateDelegationEndpoint",
        "requestBody": {
          "x-name": "CreateDelegationRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateDelegationRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not create delegation"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/appadmin/info/all": {
      "get": {
        "tags": [
          "Appadmin"
        ],
        "summary": "Get all character-count rows (app admin)",
        "description": "**Requires permission:** *ReportAdmins*\n\nReturns every SR_CHARACTER_COUNT row for the character-count admin screen.",
        "operationId": "PanopticApiEndpointsReportsCharacterCountsGetAllCharacterCountsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got rows",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAllCharacterCounts_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get rows"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/charactercount/{reportName}/{step}": {
      "get": {
        "tags": [
          "Charactercount"
        ],
        "summary": "Get the character-count limits for a report step",
        "description": "**Requires permission:** *StaffMember*\n\nReturns the min/max character limits for a named report at a given step (SR_CHARACTER_COUNT). Defaults to Min 100 / Max 10000 when there is no configured row.",
        "operationId": "PanopticApiEndpointsReportsCharacterCountsGetCharacterCountForReportStepEndpoint",
        "parameters": [
          {
            "name": "reportName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "step",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Retrieved character count",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCharacterCountForReportStep_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get character count"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/appadmin/info/char/{reportId}": {
      "get": {
        "tags": [
          "Appadmin"
        ],
        "summary": "Get a character-count row by id (app admin)",
        "description": "**Requires permission:** *ReportAdmins*\n\nReturns the single SR_CHARACTER_COUNT row for the given id (port of SR_GetCharCountById).",
        "operationId": "PanopticApiEndpointsReportsCharacterCountsGetCharCountByIdEndpoint",
        "parameters": [
          {
            "name": "reportId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got row",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCharCount_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get row"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/info/charcounts": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get character counts for a report",
        "description": "**Requires permission:** *AllStaff*\n\nReturns the per-step character-count limits (SR_CHARACTER_COUNT) for a given report name.",
        "operationId": "PanopticApiEndpointsReportsCharacterCountsGetReportCharCountsEndpoint",
        "parameters": [
          {
            "name": "reportName",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got char counts",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportCharCounts_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Failed to get char counts"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/appadmin/info/char": {
      "patch": {
        "tags": [
          "Appadmin"
        ],
        "summary": "Update a character-count row (app admin)",
        "description": "**Requires permission:** *ReportAdmins*\n\nUpdates an SR_CHARACTER_COUNT row's name, step and min/max counts. Port of SR_UpdateCharCount.",
        "operationId": "PanopticApiEndpointsReportsCharacterCountsPatchCharCountEndpoint",
        "requestBody": {
          "x-name": "CharCountWriteRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CharCountWriteRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Updated"
          },
          "400": {
            "description": "An Error Occurred - Could not update"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Appadmin"
        ],
        "summary": "Add a character-count row (app admin)",
        "description": "**Requires permission:** *ReportAdmins*\n\nInserts a new SR_CHARACTER_COUNT row (name, step, min and max counts). Port of SR_InsertCharCount.",
        "operationId": "PanopticApiEndpointsReportsCharacterCountsPostCharCountEndpoint",
        "requestBody": {
          "x-name": "CharCountWriteRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CharCountWriteRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Inserted"
          },
          "400": {
            "description": "An Error Occurred - Could not insert"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/assessments/{reportId}/{subjectCode}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get entries with assessments for a report + subject (legacy GET /reports/assessments/{ReportId}/{SubjectCode})",
        "description": "**Requires permission:** *StaffMember*\n\nReturns one entry per pupil + entry name for the report, restricted to the subject's sets, each carrying its assessment mark-grades. Port of the legacy RPT_AS_GetEntriesForReportAndSubjectFaster SP, rebuilt against the canonical Subject/Class bridge.",
        "operationId": "PanopticApiEndpointsReportsAssessmentsGetEntriesWithAssessmentsEndpoint",
        "parameters": [
          {
            "name": "reportId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "subjectCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got entries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEntriesForSubjectWithAssessments_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get entries"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/reports/assessments": {
      "put": {
        "tags": [
          "Reports"
        ],
        "summary": "Save assessment data (legacy PUT /reports/assessments)",
        "description": "**Requires permission:** *StaffMember*\n\nUpserts each supplied grade's value onto the matching entry (by report + entry name + pupil NAME_ID + grade display name). Port of the legacy RPT_AS_SaveAssessment SP.",
        "operationId": "PanopticApiEndpointsReportsAssessmentsPutSaveAssessmentDataEndpoint",
        "requestBody": {
          "x-name": "SaveAssessmentDataRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SaveAssessmentDataRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Saved"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not save assessments"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Reports/Admin/Analytics": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Report Admin analytics overview",
        "description": "**Requires permissions:** *MusicAdmins* or *ReportAdmins*\n\nAggregate completion and AI-usage statistics across active reports for an academic year, broken down overall, per report and per step. Built from a small fixed number of projected GROUP BY queries (no N+1).",
        "operationId": "PanopticApiEndpointsReportsAdminGetReportAnalyticsEndpoint",
        "parameters": [
          {
            "name": "academicYear",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "music",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - analytics overview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportAnalytics_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - could not build analytics"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ReleaseNotes/{id}": {
      "delete": {
        "tags": [
          "Releasenotes"
        ],
        "summary": "Delete release notes",
        "description": "**Requires permission:** *IT*\n\nDeletes a release-notes entry by id.",
        "operationId": "PanopticApiEndpointsReleaseNotesDeleteReleaseNoteEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - deleted (or already absent)"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ReleaseNotes": {
      "get": {
        "tags": [
          "Releasenotes"
        ],
        "summary": "Get release notes",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nReturns published release notes (newest first). Admins may request unpublished drafts too.",
        "operationId": "PanopticApiEndpointsReleaseNotesGetReleaseNotesEndpoint",
        "parameters": [
          {
            "name": "includeUnpublished",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReleaseNotes_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Releasenotes"
        ],
        "summary": "Create or update release notes",
        "description": "**Requires permission:** *IT*\n\nUpserts a versioned set of release notes (by Id, or by Version if no Id).",
        "operationId": "PanopticApiEndpointsReleaseNotesUpsertReleaseNoteEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertReleaseNote_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - saved",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertReleaseNote_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Version is required"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/applicants": {
      "get": {
        "tags": [
          "Applicants"
        ],
        "summary": "Get applicants",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nFuture-year joiners (lifecycle status Applicant), each with facts from their earliest future-year enrolment. Excludes external OpenApply admissions. Supports filter, sort and paging.",
        "operationId": "PanopticApiEndpointsPupilsGetApplicantsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - applicants returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPupils_Response"
                }
              }
            }
          },
          "400": {
            "description": "An error occurred - could not get applicants"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/pupils": {
      "get": {
        "tags": [
          "Pupils"
        ],
        "summary": "Get current pupils",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nCurrent students (lifecycle status Current), each with facts from their current academic-year enrolment. Supports filter, sort and paging.",
        "operationId": "PanopticApiEndpointsPupilsGetCurrentStudentsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - current pupils returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPupils_Response"
                }
              }
            }
          },
          "400": {
            "description": "An error occurred - could not get pupils"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/leavers": {
      "get": {
        "tags": [
          "Leavers"
        ],
        "summary": "Get leavers",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nFormer students (lifecycle status Leaver), each resolved to their final (most-recent) enrolment year's facts plus leave date. Supports filter, sort and paging.",
        "operationId": "PanopticApiEndpointsPupilsGetLeaversEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - leavers returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPupils_Response"
                }
              }
            }
          },
          "400": {
            "description": "An error occurred - could not get leavers"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/pupils/{upi}": {
      "get": {
        "tags": [
          "Pupils"
        ],
        "summary": "Get a pupil by UPI",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nA single canonical pupil identified by UPI, with their full enrolment history ordered newest academic year first.",
        "operationId": "PanopticApiEndpointsPupilsGetPupilEndpoint",
        "parameters": [
          {
            "name": "upi",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - pupil returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPupil_Response"
                }
              }
            }
          },
          "404": {
            "description": "No pupil exists for the given UPI"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/pd": {
      "get": {
        "tags": [
          "Pd"
        ],
        "summary": "Gets all forms a user has submitted",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nReturns all forms based on the user's email. Uses the optional email query param, falling back to the caller's own email.",
        "operationId": "PanopticApiEndpointsProfessionalDevelopmentGetFormsByUserEndpoint",
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Successfully retrieved forms"
          },
          "400": {
            "description": "An Error Occurred - Could not retrieve forms"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/pd/admin/forms/{closed}": {
      "get": {
        "tags": [
          "Pd"
        ],
        "summary": "Gets forms in progress",
        "description": "**Requires permission:** *PDAdmins*\n\nReturns all forms in progress, or all closed forms when {closed} is true.",
        "operationId": "PanopticApiEndpointsProfessionalDevelopmentGetFormsEndpoint",
        "parameters": [
          {
            "name": "closed",
            "in": "path",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Successfully retrieved forms"
          },
          "400": {
            "description": "An Error Occurred - Could not retrieve forms"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/pd/approvals/{approvalsType}": {
      "get": {
        "tags": [
          "Pd"
        ],
        "summary": "Gets all forms a user has been asked to approve",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nReturns approval requests for the caller. 0 = needed, 1 = history (already actioned), 2 = closed.",
        "operationId": "PanopticApiEndpointsProfessionalDevelopmentGetUserApprovalsEndpoint",
        "parameters": [
          {
            "name": "approvalsType",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ApprovalsType"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Successfully retrieved approvals"
          },
          "400": {
            "description": "An Error Occurred - Could not retrieve approvals"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/pd/form/{formId}": {
      "get": {
        "tags": [
          "Pd"
        ],
        "summary": "Gets a single PD form",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nReturns a form. Full details are only returned to the submitter, a PD admin, or one of the form's approvers; otherwise only the basic fields are returned.",
        "operationId": "PanopticApiEndpointsProfessionalDevelopmentGetUserFormEndpoint",
        "parameters": [
          {
            "name": "formId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Successfully retrieved form"
          },
          "400": {
            "description": "An Error Occurred - Could not retrieve form"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/pd/comment": {
      "post": {
        "tags": [
          "Pd"
        ],
        "summary": "Adds a comment to a form",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nInserts a comment on a form that can be viewed by other approvers.",
        "operationId": "PanopticApiEndpointsProfessionalDevelopmentPostInsertCommentEndpoint",
        "requestBody": {
          "x-name": "SubmitCommentRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitCommentRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Inserted comment"
          },
          "400": {
            "description": "An Error Occurred - Could not insert comment. Please try again."
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/pd/submit": {
      "post": {
        "tags": [
          "Pd"
        ],
        "summary": "Submits a PD form",
        "description": "**Requires permission:** *StaffMember*\n\nInserts a PD form into PD_Forms, calculates and inserts the relevant steps, and notifies the PD admins and the submitter.",
        "operationId": "PanopticApiEndpointsProfessionalDevelopmentPostInsertPdFormEndpoint",
        "requestBody": {
          "x-name": "SubmitPdFormRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitPdFormRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Inserted PD form"
          },
          "400": {
            "description": "An Error Occurred - Could not insert PD form. Please try again."
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/pd/approvals": {
      "put": {
        "tags": [
          "Pd"
        ],
        "summary": "Updates a PD form entry and its associated approvals",
        "description": "**Requires permission:** *StaffMember*\n\nRecords an approval/denial against a step, advances the form through any non-approval steps, closes the form when finished, and notifies the relevant parties.",
        "operationId": "PanopticApiEndpointsProfessionalDevelopmentPutUpdateApprovalsEndpoint",
        "requestBody": {
          "x-name": "UpdateApprovalsRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateApprovalsRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Successfully updated approvals"
          },
          "400": {
            "description": "An Error Occurred - Could not update approvals"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/pd/edit/{id}": {
      "put": {
        "tags": [
          "Pd"
        ],
        "summary": "Updates a PD form's values",
        "description": "**Requires permission:** *PDAdmins*\n\nUpdates a PD form entry by id, used by the admin edit screen. Emails the submitter when the booking details change.",
        "operationId": "PanopticApiEndpointsProfessionalDevelopmentPutUpdateFormEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "x-name": "UpdateFormRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateFormRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Successfully updated form"
          },
          "400": {
            "description": "An Error Occurred - Could not update form"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Periods": {
      "get": {
        "tags": [
          "Periods"
        ],
        "summary": "Get Periods for Date",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nGet the periods for a given date",
        "operationId": "PanopticApiEndpointsPeriodsGetPeriodsForDateEndpoint",
        "parameters": [
          {
            "name": "date",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Periods found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPeriodsForDate_Response"
                },
                "example": {
                  "periods": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Pdf/OpenApplySummary": {
      "post": {
        "tags": [
          "Pdf"
        ],
        "summary": "Generate OpenApply Child Summary PDF",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nRenders the child summary for the given OpenApply applicants to a branded PDF in-house (QuestPDF), emails the caller a copy, and returns the bytes.",
        "operationId": "PanopticApiEndpointsPdfPostOpenApplySummaryPdfEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostOpenApplySummaryPdf_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - PDF bytes (application/pdf)"
          },
          "400": {
            "description": "An error occurred generating the PDF"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Pdf/PhotoGrid": {
      "post": {
        "tags": [
          "Pdf"
        ],
        "summary": "Generate Photo Grid PDF",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nResolves each person's photo from Microsoft Graph (by email) and renders a branded grid to a PDF in-house (QuestPDF), returning the bytes. Used by the advanced-search results 'Export to photo grid' action.",
        "operationId": "PanopticApiEndpointsPdfPostPhotoGridPdfEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostPhotoGridPdf_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - PDF bytes (application/pdf)"
          },
          "400": {
            "description": "An error occurred generating the PDF"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Pdf/RewardVouchers": {
      "post": {
        "tags": [
          "Pdf"
        ],
        "summary": "Generate Reward Vouchers PDF",
        "description": "**Requires permissions:** *Admin* or *RewardPrinters*\n\nRenders commendation/distinction vouchers to a print-ready two-page duplex PDF in-house (QuestPDF), emails the caller a copy, and returns the bytes.",
        "operationId": "PanopticApiEndpointsPdfPostRewardVouchersPdfEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostRewardVouchersPdf_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - PDF bytes (application/pdf)"
          },
          "400": {
            "description": "An error occurred generating the PDF"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Pdf/SchoolReport": {
      "post": {
        "tags": [
          "Pdf"
        ],
        "summary": "Generate School Report PDF",
        "description": "**Requires permissions:** *Guardian* or *Leaver* or *Parent* or *StaffMember* or *Student*\n\nRenders school reports to a branded PDF in-house (QuestPDF) and returns the bytes.",
        "operationId": "PanopticApiEndpointsPdfPostSchoolReportPdfEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSchoolReportPdf_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - PDF bytes (application/pdf)"
          },
          "400": {
            "description": "An error occurred generating the PDF"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Pdf/Timetables": {
      "post": {
        "tags": [
          "Pdf"
        ],
        "summary": "Generate Bulk Timetables PDF",
        "description": "**Requires permission:** *TimetableAdmin*\n\nRenders a two-week timetable for each supplied pupil or staff member to a branded PDF in-house (QuestPDF), one landscape page per person, and returns the bytes. Everything is resolved in a handful of projected queries regardless of how many people are asked for.",
        "operationId": "PanopticApiEndpointsPdfPostTimetablesPdfEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostTimetablesPdf_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden - Requires TimetableAdmin"
          },
          "200": {
            "description": "Success - PDF bytes (application/pdf)"
          },
          "400": {
            "description": "An error occurred generating the PDF"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Slots/{slotId}": {
      "delete": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Delete Parents Evening Slot",
        "description": "**Requires permission:** *ParentsEvening*\n\nParents' evening - delete Parents Evening Slot.",
        "operationId": "PanopticApiEndpointsParentsEveningSetupDeleteParentsEveningSlotEndpoint",
        "parameters": [
          {
            "name": "slotId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvenings/Students/Overseas": {
      "get": {
        "tags": [
          "Parentsevenings"
        ],
        "summary": "Get Overseas Students For Evening",
        "description": "**Requires permission:** *StaffMember*\n\nParents' evening - get Overseas Students For Evening.",
        "operationId": "PanopticApiEndpointsParentsEveningSetupGetOverseasStudentsForEveningEndpoint",
        "parameters": [
          {
            "name": "staffNameId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eveningId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetOverseaStudentsForEvening_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Sets/OneOff/Students": {
      "get": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Get Students For One Off",
        "description": "**Requires permission:** *StaffMember*\n\nParents' evening - get Students For One Off.",
        "operationId": "PanopticApiEndpointsParentsEveningSetupGetStudentsForOneOffEndpoint",
        "parameters": [
          {
            "name": "parentsEveningSetId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudentsForOneOff_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Preferences": {
      "patch": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Patch Update Teacher Preferences",
        "description": "**Requires permission:** *StaffMember*\n\nParents' evening - patch Update Teacher Preferences.",
        "operationId": "PanopticApiEndpointsParentsEveningSetupPatchUpdateTeacherPreferencesEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchUpdateTeacherPreferences_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Slots": {
      "post": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Post Create Multiple Slots",
        "description": "**Requires permission:** *ParentsEvening*\n\nParents' evening - post Create Multiple Slots.",
        "operationId": "PanopticApiEndpointsParentsEveningSetupPostCreateMultipleSlotsEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMultipleSlots_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/{eveningId}/Sets/OneOff": {
      "post": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Post Create One Off Set",
        "description": "**Requires permission:** *StaffMember*\n\nParents' evening - post Create One Off Set.",
        "operationId": "PanopticApiEndpointsParentsEveningSetupPostCreateOneOffSetEndpoint",
        "parameters": [
          {
            "name": "eveningId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOneOffSet_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Locations/Teams": {
      "put": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Put Create Teams Events",
        "description": "**Requires permission:** *ParentsEvening*\n\nParents' evening - put Create Teams Events.",
        "operationId": "PanopticApiEndpointsParentsEveningSetupPutCreateTeamsEventsEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLocations_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Dates": {
      "put": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Put Parents Evening Date",
        "description": "**Requires permission:** *ParentsEvening*\n\nParents' evening - put Parents Evening Date.",
        "operationId": "PanopticApiEndpointsParentsEveningSetupPutParentsEveningDateEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEveningDate_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvenings/TeacherSlots/Populate": {
      "put": {
        "tags": [
          "Parentsevenings"
        ],
        "summary": "Put Populate Teacher Slots",
        "description": "**Requires permission:** *ParentsEvening*\n\nParents' evening - put Populate Teacher Slots.",
        "operationId": "PanopticApiEndpointsParentsEveningSetupPutPopulateTeacherSlotsEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PopulateTeacherSlots_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Locations": {
      "put": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Put Save Locations",
        "description": "**Requires permission:** *ParentsEvening*\n\nParents' evening - put Save Locations.",
        "operationId": "PanopticApiEndpointsParentsEveningSetupPutSaveLocationsEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLocations_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/{eveningId}/Sets": {
      "put": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Put Update Sets For Parents Evening",
        "description": "**Requires permission:** *ParentsEvening*\n\nParents' evening - put Update Sets For Parents Evening.",
        "operationId": "PanopticApiEndpointsParentsEveningSetupPutUpdateSetsForParentsEveningEndpoint",
        "parameters": [
          {
            "name": "eveningId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSetsForEvening_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/UnAvailability": {
      "put": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Put Update Un Availability",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport*\n\nParents' evening - put Update Un Availability.",
        "operationId": "PanopticApiEndpointsParentsEveningSetupPutUpdateUnAvailabilityEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUnavailability_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Request": {
      "get": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Get Appointment Request",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nParents' evening - get Appointment Request.",
        "operationId": "PanopticApiEndpointsParentsEveningRequestsGetAppointmentRequestEndpoint",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "eveningId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAppointmentRequest_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Patch Appointment Request",
        "description": "**Requires permission:** *StaffMember*\n\nParents' evening - patch Appointment Request.",
        "operationId": "PanopticApiEndpointsParentsEveningRequestsPatchAppointmentRequestEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchAppointmentRequest_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Post Appointment Request",
        "description": "**Requires permissions:** *Guardian* or *Parent* or *StaffMember*\n\nParents' evening - post Appointment Request.",
        "operationId": "PanopticApiEndpointsParentsEveningRequestsPostAppointmentRequestEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostAppointmentRequest_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/House": {
      "get": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Get Evening Details For House",
        "description": "**Requires permissions:** *Housemaster* or *IT* or *Matron* or *SeniorStudent*\n\nParents' evening - get Evening Details For House.",
        "operationId": "PanopticApiEndpointsParentsEveningEveningsGetEveningDetailsForHouseEndpoint",
        "parameters": [
          {
            "name": "house",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEveningDetailsForHouse_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Parents/{id}": {
      "get": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Get Evening For Parent",
        "description": "**Requires permissions:** *Guardian* or *Parent*\n\nParents' evening - get Evening For Parent.",
        "operationId": "PanopticApiEndpointsParentsEveningEveningsGetEveningForParentEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEveningForParent_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Parents/{parentNameId}/{id}": {
      "get": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Get Evening For Parent Admin",
        "description": "**Requires permissions:** *Guardian* or *Parent* or *ParentsEvening*\n\nParents' evening - get Evening For Parent Admin.",
        "operationId": "PanopticApiEndpointsParentsEveningEveningsGetEveningForParentAdminEndpoint",
        "parameters": [
          {
            "name": "parentNameId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEveningForParent_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Students/{id}": {
      "get": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Get Evening For Student",
        "description": "**Requires permission:** *Student*\n\nParents' evening - get Evening For Student.",
        "operationId": "PanopticApiEndpointsParentsEveningEveningsGetEveningForStudentEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEveningForStudent_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Staff/{id}": {
      "get": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Get Evening For Staff Detail",
        "description": "**Requires permission:** *StaffMember*\n\nParents' evening - get Evening For Staff Detail.",
        "operationId": "PanopticApiEndpointsParentsEveningEveningsGetEveningForStaffDetailEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEveningForStaffDetail_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Parents": {
      "get": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Get Evenings For Parent",
        "description": "**Requires permissions:** *Guardian* or *Parent*\n\nParents' evening - get Evenings For Parent.",
        "operationId": "PanopticApiEndpointsParentsEveningEveningsGetEveningsForParentEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEveningsForAudience_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Staff": {
      "get": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Get Evenings For Staff",
        "description": "**Requires permission:** *StaffMember*\n\nParents' evening - get Evenings For Staff.",
        "operationId": "PanopticApiEndpointsParentsEveningEveningsGetEveningsForStaffEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEveningsForStaff_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Students": {
      "get": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Get Evenings For Student",
        "description": "**Requires permission:** *Student*\n\nParents' evening - get Evenings For Student.",
        "operationId": "PanopticApiEndpointsParentsEveningEveningsGetEveningsForStudentEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEveningsForAudience_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/{id}": {
      "get": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Get Parents Evening",
        "description": "**Requires permission:** *ParentsEvening*\n\nParents' evening - get Parents Evening.",
        "operationId": "PanopticApiEndpointsParentsEveningEveningsGetParentsEveningEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetParentsEvening_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Data/{yearGroup}": {
      "get": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Get Parents Evening M I S Data",
        "description": "**Requires permission:** *ParentsEvening*\n\nParents' evening - get Parents Evening M I S Data.",
        "operationId": "PanopticApiEndpointsParentsEveningEveningsGetParentsEveningMISDataEndpoint",
        "parameters": [
          {
            "name": "yearGroup",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ParentsEveningMISData_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening": {
      "get": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Get Parents Evenings",
        "description": "**Requires permission:** *StaffMember*\n\nParents' evening - get Parents Evenings.",
        "operationId": "PanopticApiEndpointsParentsEveningEveningsGetParentsEveningsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAllParentsEvenings_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Patch Update Evening",
        "description": "**Requires permission:** *ParentsEvening*\n\nParents' evening - patch Update Evening.",
        "operationId": "PanopticApiEndpointsParentsEveningEveningsPatchUpdateEveningEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateParentsEvening_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Post Create Evening",
        "description": "**Requires permission:** *ParentsEvening*\n\nParents' evening - post Create Evening.",
        "operationId": "PanopticApiEndpointsParentsEveningEveningsPostCreateEveningEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateParentsEvening_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateParentsEvening_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Appointment/{id}/{sendEmail}": {
      "delete": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Delete Cancel Appointment",
        "description": "**Requires permissions:** *Guardian* or *Parent* or *ParentsEvening* or *Student*\n\nParents' evening - delete Cancel Appointment.",
        "operationId": "PanopticApiEndpointsParentsEveningAppointmentsDeleteCancelAppointmentEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "sendEmail",
            "in": "path",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Shared": {
      "get": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Get Shared Appointments",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nParents' evening - get Shared Appointments.",
        "operationId": "PanopticApiEndpointsParentsEveningAppointmentsGetSharedAppointmentsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSharedAppointments_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Post Share Appointments",
        "description": "**Requires permissions:** *Guardian* or *Parent*\n\nParents' evening - post Share Appointments.",
        "operationId": "PanopticApiEndpointsParentsEveningAppointmentsPostShareAppointmentsEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ShareAppointments_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShareAppointments_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Student/Appointments": {
      "get": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Get Student Appointments",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nParents' evening - get Student Appointments.",
        "operationId": "PanopticApiEndpointsParentsEveningAppointmentsGetStudentAppointmentsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudentAppointments_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Appointment": {
      "post": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Post Book Appointment",
        "description": "**Requires permissions:** *Guardian* or *Parent* or *ParentsEvening* or *Student*\n\nParents' evening - post Book Appointment.",
        "operationId": "PanopticApiEndpointsParentsEveningAppointmentsPostBookAppointmentEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BookAppointment_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookAppointment_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Appointment/OneOff": {
      "post": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Post Book One Off Appointment",
        "description": "**Requires permission:** *ParentsEvening*\n\nParents' evening - post Book One Off Appointment.",
        "operationId": "PanopticApiEndpointsParentsEveningAppointmentsPostBookOneOffAppointmentEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BookOneOffAppointment_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookAppointment_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Appointment/{id}": {
      "post": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Post Cancel Appointment",
        "description": "**Requires permissions:** *Guardian* or *Parent* or *ParentsEvening* or *Student*\n\nParents' evening - post Cancel Appointment.",
        "operationId": "PanopticApiEndpointsParentsEveningAppointmentsPostCancelAppointmentEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelAppointmentWithNotification_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Appointment/Rearrange": {
      "post": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Post Rearrange Appointment",
        "description": "**Requires permission:** *ParentsEvening*\n\nParents' evening - post Rearrange Appointment.",
        "operationId": "PanopticApiEndpointsParentsEveningAppointmentsPostRearrangeAppointmentEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RearrangeAppointment_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookAppointment_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ParentsEvening/Reminders": {
      "post": {
        "tags": [
          "Parentsevening"
        ],
        "summary": "Post Send Parents Evening Reminders",
        "description": "**Requires permission:** *ParentsEvening*\n\nParents' evening - post Send Parents Evening Reminders.",
        "operationId": "PanopticApiEndpointsParentsEveningAppointmentsPostSendParentsEveningRemindersEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemindParents_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/OtherSchools": {
      "get": {
        "tags": [
          "Otherschools"
        ],
        "summary": "Get Other Schools",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *Guardian* or *Parent* or *Student* or *StudentFacing*\n\nGet Other Schools with optional pagination, sorting, filtering and includes",
        "operationId": "PanopticApiEndpointsOtherSchoolsGetOtherSchoolsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetOtherSchools_Response"
                },
                "example": {
                  "otherSchools": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/OptionForms/Submission": {
      "get": {
        "tags": [
          "Optionforms"
        ],
        "summary": "Get Form By Submission",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet Form By Submission by submission id",
        "operationId": "PanopticApiEndpointsOptionFormsGetFormBySubmissionEndpoint",
        "parameters": [
          {
            "name": "submissionId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFormBySubmission_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/OptionForms": {
      "get": {
        "tags": [
          "Optionforms"
        ],
        "summary": "Get Option Forms",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet Option Forms with filtering, sorting and paging",
        "operationId": "PanopticApiEndpointsOptionFormsGetOptionFormsEndpoint",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetOptionForms_Response"
                },
                "example": {
                  "optionForms": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Optionforms"
        ],
        "summary": "Update an Option Form",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nUpdate an Option Form if you are listed as an owner",
        "operationId": "PanopticApiEndpointsOptionFormsAdminPatchOptionFormEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchOptionForm_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Optionforms"
        ],
        "summary": "Create a new option form",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nCreate a new option form and return the id",
        "operationId": "PanopticApiEndpointsOptionFormsAdminPostOptionFormEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostOptionForm_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostOptionForm_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/OptionForms/Submissions": {
      "post": {
        "tags": [
          "Optionforms"
        ],
        "summary": "Send an option form submission to a student",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nSend an option form submission to a student",
        "operationId": "PanopticApiEndpointsOptionFormsAdminPostOptionFormSubmissionEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostOptionFormSubmission_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/OpenApply/Students": {
      "get": {
        "tags": [
          "Openapply"
        ],
        "summary": "Get Open Apply Students",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nGet a list of students for the open apply",
        "operationId": "PanopticApiEndpointsOpenApplyGetOpenApplyStudentsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetOpenApplyStudents_Response"
                },
                "example": {
                  "students": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/OpenApply/PrivateNotes": {
      "delete": {
        "tags": [
          "Openapply"
        ],
        "summary": "Delete a Private Note",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nDelete a Private Note",
        "operationId": "PanopticApiEndpointsOpenApplyPrivateNotesDeletePrivateNoteEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Openapply"
        ],
        "summary": "Get Private Notes",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nGet a list of private notes for the open apply",
        "operationId": "PanopticApiEndpointsOpenApplyPrivateNotesGetPrivateNotesEndpoint",
        "parameters": [
          {
            "name": "studentSearch",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPrivateNotes_Response"
                },
                "example": {
                  "notes": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Openapply"
        ],
        "summary": "Update a Private Note",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nUpdate a Private Note",
        "operationId": "PanopticApiEndpointsOpenApplyPrivateNotesPatchPrivateNoteEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchPrivateNote_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Openapply"
        ],
        "summary": "Create a new private note",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nCreate a new private note for the open apply",
        "operationId": "PanopticApiEndpointsOpenApplyPrivateNotesPostPrivateNoteEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostPrivateNote_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/OneTimeSecrets": {
      "get": {
        "tags": [
          "Onetimesecrets"
        ],
        "summary": "The caller's own one-time secrets",
        "description": "**Requires permission:** *IT*\n\nMetadata only — what it was called, when it was created, whether it has been opened. No ciphertext and no key material, so this screen cannot help anybody open a secret they do not have the passphrase for.",
        "operationId": "PanopticApiEndpointsOneTimeSecretsGetOneTimeSecretsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetOneTimeSecrets_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Onetimesecrets"
        ],
        "summary": "Store a one-time secret",
        "description": "**Requires permission:** *IT*\n\nStores a payload the client has already encrypted, and returns a short link to it. The API receives ciphertext, KDF parameters and an auth key it only ever hashes — never the passphrase and never the plaintext, so it cannot read what it is holding.",
        "operationId": "PanopticApiEndpointsOneTimeSecretsPostOneTimeSecretEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostOneTimeSecret_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - stored",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostOneTimeSecret_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - the envelope is incomplete"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/OneTimeSecrets/{id}": {
      "delete": {
        "tags": [
          "Onetimesecrets"
        ],
        "summary": "Destroy a secret before it is opened",
        "description": "**Requires permission:** *IT*\n\nDrops the ciphertext. The row stays so anybody who follows the link is told it was withdrawn rather than meeting a dead page.",
        "operationId": "PanopticApiEndpointsOneTimeSecretsDeleteOneTimeSecretEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteOneTimeSecret_Response"
                }
              }
            }
          },
          "404": {
            "description": "Not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/OneTimeSecrets/{token}/Meta": {
      "get": {
        "tags": [
          "Onetimesecrets"
        ],
        "summary": "What a recipient needs before trying a passphrase",
        "description": "**Auth:** Anonymous - no token required.\n\nReturns the key-derivation parameters for a secret and whether there is anything left to release. Deliberately NOT the ciphertext: knowing the salts alone gives an attacker nothing to work offline against. Anonymous by design — the recipient is usually not a Panoptic user.",
        "operationId": "PanopticApiEndpointsOneTimeSecretsGetOneTimeSecretMetaEndpoint",
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetOneTimeSecretMeta_Response"
                }
              }
            }
          }
        }
      }
    },
    "/OneTimeSecrets/{token}/Reveal": {
      "post": {
        "tags": [
          "Onetimesecrets"
        ],
        "summary": "Take the one view",
        "description": "**Auth:** Anonymous - no token required.\n\nChecks the auth key derived from the passphrase and, on a match, returns the ciphertext exactly once and destroys it. A wrong passphrase costs an attempt but does NOT spend the view; running out of attempts destroys the secret.",
        "operationId": "PanopticApiEndpointsOneTimeSecretsPostRevealOneTimeSecretEndpoint",
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostRevealOneTimeSecret_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success - revealed, or rejected with attempts left",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostRevealOneTimeSecret_Response"
                }
              }
            }
          }
        }
      }
    },
    "/Onarken/Email": {
      "post": {
        "tags": [
          "Onarken"
        ],
        "summary": "Send Laptop Loan Email",
        "description": "**Auth:** Anonymous - no token required.\n\nSend an email to housemaster with a list of laptop loan transactions for the day",
        "operationId": "PanopticApiEndpointsOnarkenPostSendLaptopLoanEmailEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSendLaptopLoanEmail_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Emails Sent"
          },
          "400": {
            "description": "An Error Occurred - Could Not Send Emails"
          }
        }
      }
    },
    "/Notion/Page": {
      "get": {
        "tags": [
          "Notion"
        ],
        "summary": "Get Notion Page Blocks",
        "description": "**Requires permission:** *StaffMember*\n\nGet the blocks of a Notion page by page id",
        "operationId": "PanopticApiEndpointsNotionGetNotionPageEndpoint",
        "parameters": [
          {
            "name": "pageId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got Html from Notion page",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetNotionPage_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get Html"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Notifications/All": {
      "get": {
        "tags": [
          "Notifications"
        ],
        "summary": "Get All Notifications",
        "description": "**Requires permission:** *IT*\n\nRetrieves all notifications with optional filtering, sorting, and pagination.",
        "operationId": "PanopticApiEndpointsNotificationsGetAllNotificationsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAllNotifications_Response"
                },
                "example": {
                  "notifications": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Notification/Options": {
      "get": {
        "tags": [
          "Notification"
        ],
        "summary": "Get Notification Options",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet the notification options for the current user (defaults if none stored yet).",
        "operationId": "PanopticApiEndpointsNotificationsGetNotificationOptionsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized - User not found"
          },
          "200": {
            "description": "Success - got options",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetNotificationOptions_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get notification options"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Notification"
        ],
        "summary": "Update Notification Options",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nUpdate the notification options for the current user.",
        "operationId": "PanopticApiEndpointsNotificationsPatchNotificationOptionsEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchNotificationOptions_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized - User not found"
          },
          "200": {
            "description": "Success - options updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PatchNotificationOptions_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not update notification options"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Notifications": {
      "get": {
        "tags": [
          "Notifications"
        ],
        "summary": "Get Notifications",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet Notifications for the current user. Supports paging, sorting, and filtering.",
        "operationId": "PanopticApiEndpointsNotificationsGetNotificationsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized - User not found"
          },
          "200": {
            "description": "Success - Got Notifications",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetNotifications_Response"
                },
                "example": {
                  "notifications": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get notifications"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Notifications/Dismiss": {
      "patch": {
        "tags": [
          "Notifications"
        ],
        "summary": "Dismiss notifications",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nMarks a single notification dismissed (NotificationId), or dismisses all of the current user's notifications when DismissAll is true.",
        "operationId": "PanopticApiEndpointsNotificationsPatchDismissNotificationsEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DismissNotifications_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized - User not found"
          },
          "200": {
            "description": "Success - notifications dismissed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DismissNotifications_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not dismiss notifications"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Notification/Devices": {
      "delete": {
        "tags": [
          "Notification"
        ],
        "summary": "Unregister push device",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nRemoves one of the calling user's registered push devices (e.g. on sign-out or when notification permission is revoked). A user can only remove their own devices.",
        "operationId": "PanopticApiEndpointsNotificationsDevicesDeleteDeviceEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "*/*": {
              "schema": {
                "$ref": "#/components/schemas/DeleteDevice_Request"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteDevice_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized - user not found"
          },
          "200": {
            "description": "Success - device removed (or already absent)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteDevice_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Token is required"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Notification"
        ],
        "summary": "Register push device",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nRegisters (upserts by token) the calling user's push device so the API can deliver notifications in-house. Called after sign-in on each platform.",
        "operationId": "PanopticApiEndpointsNotificationsDevicesPostRegisterDeviceEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterDevice_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized - user not found"
          },
          "200": {
            "description": "Success - device registered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegisterDevice_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Platform, Provider and Token are required"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Notification/Devices/{email}": {
      "get": {
        "tags": [
          "Notification"
        ],
        "summary": "Get a user's push devices",
        "description": "**Requires permission:** *IT*\n\nAdmin view of the push devices registered to a given user, surfaced on the Users admin screen.",
        "operationId": "PanopticApiEndpointsNotificationsDevicesGetUserDevicesEndpoint",
        "parameters": [
          {
            "name": "email",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - the user's registered devices",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUserDevices_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/MusicLessons/Teachers": {
      "get": {
        "tags": [
          "Musiclessons"
        ],
        "summary": "Get music teachers (admin)",
        "description": "**Requires permission:** *MusicAdmins*\n\nMusic teachers from the Microsoft Graph group with their assigned instruments.",
        "operationId": "PanopticApiEndpointsMusicLessonsTeachersGetMusicTeachersEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMusicTeachers_Response"
                },
                "example": {
                  "teachers": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/MusicLessons/Teacher/Lessons": {
      "get": {
        "tags": [
          "Musiclessons"
        ],
        "summary": "Get the logged-in teacher's music lessons",
        "description": "**Requires permissions:** *MusicAdmins* or *MusicTeacher*\n\nThe logged-in music teacher's own active lessons (powers the teacher register).",
        "operationId": "PanopticApiEndpointsMusicLessonsTeachersGetMyTeacherLessonsEndpoint",
        "parameters": [
          {
            "name": "archived",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "email",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMusicLessons_Response"
                },
                "example": {
                  "lessons": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/MusicLessons/Teacher/{email}/Lessons": {
      "get": {
        "tags": [
          "Musiclessons"
        ],
        "summary": "Get a teacher's music lessons (admin)",
        "description": "**Requires permission:** *MusicAdmins*\n\nOne teacher's active lessons (admin slide-over / register).",
        "operationId": "PanopticApiEndpointsMusicLessonsTeachersGetTeacherLessonsEndpoint",
        "parameters": [
          {
            "name": "email",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "archived",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "email",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMusicLessons_Response"
                },
                "example": {
                  "lessons": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/MusicLessons/Teacher/Instruments": {
      "patch": {
        "tags": [
          "Musiclessons"
        ],
        "summary": "Set a teacher's instruments",
        "description": "**Requires permission:** *MusicAdmins*\n\nReplaces the complete set of instruments a teacher is assigned to teach.",
        "operationId": "PanopticApiEndpointsMusicLessonsTeachersPatchMusicTeacherInstrumentsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMusicTeacherInstruments_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Updated"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/MusicLessons/Teacher/{email}/RemoveFromLessons": {
      "patch": {
        "tags": [
          "Musiclessons"
        ],
        "summary": "Remove a teacher from all their lessons",
        "description": "**Requires permission:** *MusicAdmins*\n\nUnassigns the teacher from all their active lessons (sets the lessons to have no teacher).",
        "operationId": "PanopticApiEndpointsMusicLessonsTeachersPatchRemoveTeacherFromLessonsEndpoint",
        "parameters": [
          {
            "name": "email",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "archived",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "email",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Updated"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/MusicLessons/Student/{id}": {
      "delete": {
        "tags": [
          "Musiclessons"
        ],
        "summary": "Archive a music student",
        "description": "**Requires permission:** *MusicAdmins*\n\nArchives the music student and cascade-archives their music lessons.",
        "operationId": "PanopticApiEndpointsMusicLessonsStudentsDeleteMusicStudentEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Archived"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "An Error Occurred - Not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/MusicLessons/Students": {
      "get": {
        "tags": [
          "Musiclessons"
        ],
        "summary": "Get all music students (admin)",
        "description": "**Requires permission:** *MusicAdmins*\n\nAll active (or archived) music students with canonical pupil detail.",
        "operationId": "PanopticApiEndpointsMusicLessonsStudentsGetMusicStudentsEndpoint",
        "parameters": [
          {
            "name": "archived",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMusicStudents_Response"
                },
                "example": {
                  "students": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/MusicLessons/Student": {
      "patch": {
        "tags": [
          "Musiclessons"
        ],
        "summary": "Update a music student",
        "description": "**Requires permission:** *MusicAdmins*",
        "operationId": "PanopticApiEndpointsMusicLessonsStudentsPatchMusicStudentEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertMusicStudent_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Updated"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Musiclessons"
        ],
        "summary": "Add a music student",
        "description": "**Requires permission:** *MusicAdmins*",
        "operationId": "PanopticApiEndpointsMusicLessonsStudentsPostMusicStudentEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertMusicStudent_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Musiclessons"
        ],
        "summary": "Get Music Lessons for a Student",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *Guardian* or *Parent* or *StaffMember* or *Student* or *StudentFacing*\n\nReturns a student's current (non-archived) music lessons, with instrument and teacher. Students see their own; parents/guardians only their linked children; staff any pupil.",
        "operationId": "PanopticApiEndpointsMusicLessonsLessonsGetMusicLessonsForStudentEndpoint",
        "parameters": [
          {
            "name": "nameId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Not permitted to view this student's lessons"
          },
          "200": {
            "description": "Success - Returned lessons",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMusicLessonsForStudent_Response"
                },
                "example": {
                  "lessons": []
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/MusicLessons/Lesson/{id}": {
      "delete": {
        "tags": [
          "Musiclessons"
        ],
        "summary": "Archive a music lesson",
        "description": "**Requires permission:** *MusicAdmins*",
        "operationId": "PanopticApiEndpointsMusicLessonsLessonsDeleteMusicLessonEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Archived"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "An Error Occurred - Not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/MusicLessons/Lessons": {
      "get": {
        "tags": [
          "Musiclessons"
        ],
        "summary": "Get all music lessons (admin)",
        "description": "**Requires permission:** *MusicAdmins*\n\nAll active (or archived) music lessons with canonical pupil + teacher + instrument.",
        "operationId": "PanopticApiEndpointsMusicLessonsLessonsGetMusicLessonsEndpoint",
        "parameters": [
          {
            "name": "archived",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "email",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMusicLessons_Response"
                },
                "example": {
                  "lessons": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/MusicLessons/Lesson": {
      "patch": {
        "tags": [
          "Musiclessons"
        ],
        "summary": "Update a music lesson",
        "description": "**Requires permission:** *MusicAdmins*",
        "operationId": "PanopticApiEndpointsMusicLessonsLessonsPatchMusicLessonEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertMusicLesson_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Updated"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Musiclessons"
        ],
        "summary": "Create a music lesson",
        "description": "**Requires permission:** *MusicAdmins*",
        "operationId": "PanopticApiEndpointsMusicLessonsLessonsPostMusicLessonEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertMusicLesson_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/MusicLessons/Instrument/{id}": {
      "delete": {
        "tags": [
          "Musiclessons"
        ],
        "summary": "Archive a music instrument",
        "description": "**Requires permission:** *MusicAdmins*\n\nArchives the instrument and cascade-archives lessons using it + removes teacher assignments.",
        "operationId": "PanopticApiEndpointsMusicLessonsInstrumentsDeleteMusicInstrumentEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Archived"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "An Error Occurred - Not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/MusicLessons/Instruments": {
      "get": {
        "tags": [
          "Musiclessons"
        ],
        "summary": "Get Music Instruments",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nReturns the instruments the music department teaches (non-archived).",
        "operationId": "PanopticApiEndpointsMusicLessonsInstrumentsGetInstrumentsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Returned instruments",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetInstruments_Response"
                },
                "example": {
                  "instruments": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get instruments"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/MusicLessons/Instrument": {
      "post": {
        "tags": [
          "Musiclessons"
        ],
        "summary": "Create / update a music instrument",
        "description": "**Requires permission:** *MusicAdmins*\n\nCreates a new instrument (inserting at the given orchestral order) or updates an existing one.",
        "operationId": "PanopticApiEndpointsMusicLessonsInstrumentsPostMusicInstrumentEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertMusicInstrument_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Saved"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/MusicLessons/Import/Candidates": {
      "get": {
        "tags": [
          "Musiclessons"
        ],
        "summary": "Get OpenApply music lesson import candidates",
        "description": "**Requires permission:** *MusicAdmins*\n\nPupil-instrument pairs from the parent-completed OpenApply music lesson form, bridged to canonical pupils via the iSAMS `OA_Id` custom field. One row per instrument, each with the ML_Instruments row matched by name. Limited to pupils joining in the current academic year, excluding those who answered No to wanting lessons.",
        "operationId": "PanopticApiEndpointsMusicLessonsImportGetMusicImportCandidatesEndpoint",
        "parameters": [
          {
            "name": "includeImported",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMusicImportCandidates_Response"
                },
                "example": {
                  "candidates": [],
                  "unresolvedPupils": 0,
                  "declinedPupils": 0,
                  "otherYearPupils": 0
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/MusicLessons/Import": {
      "post": {
        "tags": [
          "Musiclessons"
        ],
        "summary": "Import selected OpenApply music lesson requests",
        "description": "**Requires permission:** *MusicAdmins*\n\nCreates one lesson per selected pupil-instrument pair, linked to an instrument but with no teacher, plus an ML_Students row for any pupil who is not already a music student. Pairs that already have a non-archived lesson are skipped, so re-running is safe.",
        "operationId": "PanopticApiEndpointsMusicLessonsImportPostMusicImportEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportMusicLessons_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportMusicLessons_Response"
                },
                "example": {
                  "lessonsCreated": 0,
                  "studentsCreated": 0,
                  "skipped": 0,
                  "errors": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Modules": {
      "delete": {
        "tags": [
          "Modules"
        ],
        "summary": "Delete Module",
        "description": "**Requires permission:** *Admin*\n\nDelete a module",
        "operationId": "PanopticApiEndpointsModulesDeleteModuleEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Modules"
        ],
        "summary": "Brief Description",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nLong Description",
        "operationId": "PanopticApiEndpointsModulesGetModulesEndpoint",
        "parameters": [
          {
            "name": "admin",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetModules_Response"
                },
                "example": {
                  "modules": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Modules"
        ],
        "summary": "Update Module",
        "description": "**Requires permission:** *Admin*\n\nUpdate a module",
        "operationId": "PanopticApiEndpointsModulesPatchModuleEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchModule_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Modules"
        ],
        "summary": "Inserts a new module",
        "description": "**Requires permission:** *Admin*\n\nInserts a new module",
        "operationId": "PanopticApiEndpointsModulesPostModuleEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostModule_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Module Inserted"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Modules/Student": {
      "get": {
        "tags": [
          "Modules"
        ],
        "summary": "Get Modules For Student",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet Modules For Student, this rechecks the permissions of the user to access the student/modules",
        "operationId": "PanopticApiEndpointsModulesGetModulesForStudentEndpoint",
        "parameters": [
          {
            "name": "studentId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetModulesForStudent_Response"
                },
                "example": {
                  "modules": [],
                  "disabledFeatureSets": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Modules/Permissions": {
      "get": {
        "tags": [
          "Modules"
        ],
        "summary": "Get Module Permissions",
        "description": "**Requires permission:** *Admin*\n\nGet Module Permissions, filterable, sortable, and pageable.<br />Supported Includes: `Groups`",
        "operationId": "PanopticApiEndpointsModulesPermissionsGetModulePermissionsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got Module Permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetModulePermissions_Response"
                },
                "example": {
                  "modulePermissions": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could Not Get Module Permissions"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Modules"
        ],
        "summary": "Update Module Permission",
        "description": "**Requires permission:** *Admin*\n\nUpdate a module permission",
        "operationId": "PanopticApiEndpointsModulesPermissionsPatchModulePermissionEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchModulePermission_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Permissions Updated"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could Not Update Permissions"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Modules"
        ],
        "summary": "Insert Module Permission",
        "description": "**Requires permission:** *Admin*\n\nInsert a new module permission",
        "operationId": "PanopticApiEndpointsModulesPermissionsPostModulePermissionEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostModulePermission_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Permissions Inserted"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could Not Insert Permissions"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/DirectReports": {
      "get": {
        "tags": [
          "Directreports"
        ],
        "summary": "Get direct reports",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nReturns the staff who report to the logged-in user (their line-managed team), ordered by name. Empty for users who manage no one.",
        "operationId": "PanopticApiEndpointsMicrosoftGetDirectReportsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized - User not found"
          },
          "200": {
            "description": "Success - direct reports",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetDirectReports_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get direct reports"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Events": {
      "get": {
        "tags": [
          "Events"
        ],
        "summary": "Get Events",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet Events for use for a specific day",
        "operationId": "PanopticApiEndpointsMicrosoftGetEventsEndpoint",
        "parameters": [
          {
            "name": "date",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEvents_Response"
                },
                "example": {
                  "events": [],
                  "allDayEvents": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Microsoft/Groups/{id}/Members": {
      "get": {
        "tags": [
          "Microsoft"
        ],
        "summary": "Get Group Members",
        "description": "**Requires permission:** *StaffMember*\n\nReturns the transitive members of a Microsoft 365 group.",
        "operationId": "PanopticApiEndpointsMicrosoftGetGroupMembersEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - group members",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetGroupMembers_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Group id is required"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Microsoft/Groups": {
      "get": {
        "tags": [
          "Microsoft"
        ],
        "summary": "Get Groups",
        "description": "**Requires permission:** *StaffMember*\n\nGet Groups with filtering",
        "operationId": "PanopticApiEndpointsMicrosoftGetGroupsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetGroups_Response"
                },
                "example": {
                  "groups": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Events/Profile": {
      "get": {
        "tags": [
          "Events"
        ],
        "summary": "Get Profile Events",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGets Today's, Tomorrow's and All Day Events for the User",
        "operationId": "PanopticApiEndpointsMicrosoftGetProfileEventsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Got Events",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetProfileEvents_Response"
                },
                "example": {
                  "todayEvents": [],
                  "tomorrowEvents": [],
                  "allDayEvents": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Microsoft/Staff": {
      "get": {
        "tags": [
          "Microsoft"
        ],
        "summary": "Search for staff members from Microsoft",
        "description": "**Requires permission:** *StaffMember*\n\nSearch for staff members from Microsoft with optional pagination, sorting, filtering and includes<br />Supported Includes: None ",
        "operationId": "PanopticApiEndpointsMicrosoftGetSearchStaffEndpoint",
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSearchStaff_Response"
                },
                "example": {
                  "staff": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/photo": {
      "post": {
        "tags": [
          "Photo"
        ],
        "summary": "Post User Photo",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nPost User Photo.",
        "operationId": "PanopticApiEndpointsMicrosoftPostUserPhotoEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserPhoto_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPhoto_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Mailchimp/Update": {
      "post": {
        "tags": [
          "Mailchimp"
        ],
        "summary": "Update Mailchimp Contacts",
        "description": "**Auth:** Anonymous - no token required.\n\nRe sync the contacts in mailchimp with the contacts in the database",
        "operationId": "PanopticApiEndpointsMailchimpPostUpdateContactsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostUpdateContacts_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - contacts updated"
          },
          "400": {
            "description": "An Error Occurred - could not update contatcs"
          }
        }
      }
    },
    "/Me/Subjects": {
      "get": {
        "tags": [
          "Me"
        ],
        "summary": "Get the subjects the caller is a HoD for",
        "description": "**Requires permission:** *StaffMember*\n\nResolves the caller (email -> StaffMember.UPI) to the subjects they head (SubjectHead.StaffUPI), rebuilt from the canonical Subject/SubjectHead model.",
        "operationId": "PanopticApiEndpointsLookupsGetMySubjectsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got subjects",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMySubjects_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get subjects"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/SubjectSets": {
      "get": {
        "tags": [
          "Subjectsets"
        ],
        "summary": "Get subject sets (optionally by year group)",
        "description": "**Requires permission:** *StaffMember*\n\nAll in-use subject sets, optionally filtered to a year group. Rebuilt from the canonical Class model. Serves both /SubjectSets (with ?Year=) and /subjectsets (all).",
        "operationId": "PanopticApiEndpointsLookupsGetSubjectSetsLookupEndpoint",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got subject sets",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSubjectSetsLookup_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get subject sets"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Me/SubjectSets": {
      "get": {
        "tags": [
          "Me"
        ],
        "summary": "Get the caller's own subject sets",
        "description": "**Requires permission:** *StaffMember*\n\nThe subject sets the logged-in staff member report-writes (ClassStaff.ReportWriter), optionally filtered to a year group. Rebuilt from the canonical Class model.",
        "operationId": "PanopticApiEndpointsLookupsGetMySubjectSetsLookupEndpoint",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got subject sets",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSubjectSetsLookup_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get subject sets"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/TutorGroups": {
      "get": {
        "tags": [
          "Tutorgroups"
        ],
        "summary": "Get tutor groups (optionally by year)",
        "description": "**Requires permission:** *StaffMember*\n\nAll in-use tutor groups (forms) in the current report year, optionally filtered to a specific year. Rebuilt from the canonical Form model.",
        "operationId": "PanopticApiEndpointsLookupsGetTutorGroupsLookupEndpoint",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got tutor groups",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTutorGroupsLookup_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get tutor groups"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/LessonCover/Assignments": {
      "get": {
        "tags": [
          "Lessoncover"
        ],
        "summary": "Gets a list of lesson cover assignments",
        "description": "**Requires permission:** *StaffMember*",
        "operationId": "PanopticApiEndpointsLessonCoverGetLessonCoverAssignmentsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "startDateTime",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          },
          {
            "name": "endDateTime",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetLessonCoverAssignments_Response"
                },
                "example": {
                  "lessonCoverAssignments": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/lessoncover": {
      "get": {
        "tags": [
          "Lessoncover"
        ],
        "summary": "Get a user's lesson cover",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGets all lesson cover forms for the user, either submitted by the user or on their behalf",
        "operationId": "PanopticApiEndpointsLessonCoverGetLessonCoverEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetLessonCover_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get user lesson cover"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/lessoncover/teachers/all": {
      "get": {
        "tags": [
          "Lessoncover"
        ],
        "summary": "Gets a list of all teachers for lesson cover",
        "description": "**Requires permission:** *LessonCoverAdmin*\n\nGets a list of every teacher, based on subject, for lesson cover, includes lesson cover stats and current lesson",
        "operationId": "PanopticApiEndpointsLessonCoverGetLessonCoverTeachersAllEndpoint",
        "parameters": [
          {
            "name": "subjects",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "lessonId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetLessonCoverTeachersAll_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get all teachers for lesson cover"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/lessoncover/teachers": {
      "get": {
        "tags": [
          "Lessoncover"
        ],
        "summary": "Gets a list of teachers for lesson cover",
        "description": "**Requires permissions:** *HoD* or *LessonCoverAdmin*\n\nGets a list of teachers for lesson cover, includes lesson cover stats and current lesson",
        "operationId": "PanopticApiEndpointsLessonCoverGetLessonCoverTeachersEndpoint",
        "parameters": [
          {
            "name": "lessonId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetLessonCoverTeachers_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get teachers for lesson cover"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/LessonCover": {
      "patch": {
        "tags": [
          "Lessoncover"
        ],
        "summary": "PATCH lesson cover form",
        "description": "**Requires permission:** *StaffMember*\n\nUpdate a lesson cover form",
        "operationId": "PanopticApiEndpointsLessonCoverPatchLessonCoverFormEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchLessonCoverForm_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Lessoncover"
        ],
        "summary": "Post a Lesson Cover Form",
        "description": "**Requires permission:** *StaffMember*\n\nPost a Lesson Cover Form",
        "operationId": "PanopticApiEndpointsLessonCoverPostLessonCoverFormEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostLessonCoverForm_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostLessonCoverForm_Response"
                },
                "example": {
                  "form": {
                    "lessonCoverFormId": "00000000-0000-0000-0000-000000000000",
                    "forStaffUpi": "00000000-0000-0000-0000-000000000000",
                    "startDateTime": "0001-01-01T00:00:00",
                    "endDateTime": "0001-01-01T00:00:00",
                    "reason": "Reason",
                    "created": "0001-01-01T00:00:00",
                    "createdByUpi": "00000000-0000-0000-0000-000000000000",
                    "academicYearId": "00000000-0000-0000-0000-000000000000",
                    "assignments": [
                      {
                        "lessonId": "6fb2d437-fe48-44ea-8447-7250be0357ec",
                        "coverNeeded": false,
                        "externalCover": false
                      }
                    ],
                    "showToUser": false
                  }
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/LeaveRequests/Trackers": {
      "delete": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Delete Leave Tracker",
        "description": "**Requires permission:** *StaffMember*\n\nDelete a leave tracker",
        "operationId": "PanopticApiEndpointsLeaveRequestsTrackersDeleteLeaveTrackerEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Get Leave Trackers",
        "description": "**Requires permission:** *StaffMember*\n\nGet a list of leave trackers with optional pagination, sorting, filtering and includes",
        "operationId": "PanopticApiEndpointsLeaveRequestsTrackersGetLeaveTrackersEndpoint",
        "parameters": [
          {
            "name": "groupId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetLeaveTrackers_Response"
                },
                "example": {
                  "trackers": [],
                  "isAdmin": false,
                  "members": [],
                  "currentYear": 0
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Patch Leave Tracker",
        "description": "**Requires permission:** *StaffMember*\n\nPatch a leave tracker",
        "operationId": "PanopticApiEndpointsLeaveRequestsTrackersPatchLeaveTrackerEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchLeaveTracker_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Post Leave Tracker",
        "description": "**Requires permission:** *StaffMember*\n\nPost a new leave tracker",
        "operationId": "PanopticApiEndpointsLeaveRequestsTrackersPostLeaveTrackerEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostLeaveTracker_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/LeaveRequests/Trackers/User": {
      "get": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Get User Leave Trackers",
        "description": "**Requires permission:** *StaffMember*\n\nGet a list of leave trackers for a specific user",
        "operationId": "PanopticApiEndpointsLeaveRequestsTrackersGetUserLeaveTrackersEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUserLeaveTrackers_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/LeaveRequests/Trackers/RollYearOver": {
      "post": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Post Roll Year Over",
        "description": "**Requires permission:** *StaffMember*\n\nPost a new roll year over",
        "operationId": "PanopticApiEndpointsLeaveRequestsTrackersPostRollYearOverEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostRollYearOver_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/LeaveRequests/Toil": {
      "delete": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Delete Toil Request",
        "description": "**Requires permission:** *StaffMember*\n\nDelete a toil request",
        "operationId": "PanopticApiEndpointsLeaveRequestsToilDeleteToilRequestEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Post Toil Request",
        "description": "**Requires permission:** *StaffMember*\n\nPost a new toil request",
        "operationId": "PanopticApiEndpointsLeaveRequestsToilPostToilRequestEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostToilRequest_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/LeaveRequests/Toil/Types": {
      "get": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Get Toil Types",
        "description": "**Requires permission:** *StaffMember*\n\nGet a list of toil types for a specific group",
        "operationId": "PanopticApiEndpointsLeaveRequestsToilTypesGetToilTypesEndpoint",
        "parameters": [
          {
            "name": "groupId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetToilTypes_Response"
                },
                "example": {
                  "types": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Patch Toil Type",
        "description": "**Requires permission:** *StaffMember*\n\nPatch a toil type",
        "operationId": "PanopticApiEndpointsLeaveRequestsToilTypesPatchToilTypeEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchToilType_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Brief Description",
        "description": "**Requires permission:** *StaffMember*\n\nLong Description",
        "operationId": "PanopticApiEndpointsLeaveRequestsToilTypesPostToilTypeEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostToilType_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/LeaveRequests/Requests": {
      "delete": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Delete Leave Request",
        "description": "**Requires permission:** *StaffMember*\n\nDelete a leave request",
        "operationId": "PanopticApiEndpointsLeaveRequestsRequestsDeleteLeaveRequestEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Get Leave Requests",
        "description": "**Requires permission:** *StaffMember*\n\nGet a list of leave requests for a specific group",
        "operationId": "PanopticApiEndpointsLeaveRequestsRequestsGetLeaveRequestsEndpoint",
        "parameters": [
          {
            "name": "groupId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetLeaveRequests_Response"
                },
                "example": {
                  "requests": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Patch Update Leave Request",
        "description": "**Requires permission:** *StaffMember*\n\nApprove or reject a leave request",
        "operationId": "PanopticApiEndpointsLeaveRequestsRequestsPatchUpdateLeaveRequestEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchUpdateLeaveRequest_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Post Leave Request",
        "description": "**Requires permission:** *StaffMember*\n\nPost a new leave request",
        "operationId": "PanopticApiEndpointsLeaveRequestsRequestsPostLeaveRequestEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostLeaveRequest_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/LeaveRequests/Requests/DetailsForApproval": {
      "get": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Get Details For Approval",
        "description": "**Requires permission:** *StaffMember*\n\nGet the details of a leave request for approval",
        "operationId": "PanopticApiEndpointsLeaveRequestsRequestsGetDetailsForApprovalEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetDetailsForApproval_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/LeaveRequests/Requests/Group": {
      "get": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Get Group Leave Requests",
        "description": "**Requires permission:** *StaffMember*\n\nGet a list of leave requests for a specific group",
        "operationId": "PanopticApiEndpointsLeaveRequestsRequestsGetGroupLeaveRequestsEndpoint",
        "parameters": [
          {
            "name": "groupId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetGroupLeaveRequests_Response"
                },
                "example": {
                  "requests": [],
                  "toilRequests": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/LeaveRequests/Requests/Today": {
      "get": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Get Who Is Off Today",
        "description": "**Requires permission:** *StaffMember*\n\nEverybody the caller can see who has approved leave covering today: their leave groups' members, plus their own direct reports. Feeds the leave sidebar's \"n people off today\" highlight.",
        "operationId": "PanopticApiEndpointsLeaveRequestsRequestsGetLeaveTodayEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetLeaveToday_Response"
                },
                "example": {
                  "people": [],
                  "date": "0001-01-01T00:00:00"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/LeaveRequests/Requests/ToApprove": {
      "get": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Get Requests to Approve",
        "description": "**Requires permission:** *StaffMember*\n\nGet a list of requests to approve",
        "operationId": "PanopticApiEndpointsLeaveRequestsRequestsGetRequestsToApproveEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetRequestsToApprove_Response"
                },
                "example": {
                  "requests": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/LeaveRequests/Requests/Team": {
      "get": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Get Team Leave Requests",
        "description": "**Requires permission:** *StaffMember*\n\nGet a list of leave requests for the user's team",
        "operationId": "PanopticApiEndpointsLeaveRequestsRequestsGetTeamLeaveRequestsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTeamLeaveRequests_Response"
                },
                "example": {
                  "requests": [],
                  "toilRequests": [],
                  "team": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/LeaveRequests/Requests/User": {
      "get": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Get User Leave Requests",
        "description": "**Requires permission:** *StaffMember*\n\nGet a list of leave requests for the current user",
        "operationId": "PanopticApiEndpointsLeaveRequestsRequestsGetUserLeaveRequestsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUserLeaveRequests_Response"
                },
                "example": {
                  "requests": [],
                  "toilRequests": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/LeaveRequests/Requests/ForEmployee": {
      "post": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Post Leave For Employee",
        "description": "**Requires permission:** *StaffMember*\n\nA line manager records already-agreed leave for one of their direct reports: approved on the spot, calendar event created, nobody emailed",
        "operationId": "PanopticApiEndpointsLeaveRequestsRequestsPostLeaveForEmployeeEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostLeaveForEmployee_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/LeaveRequests/Overview": {
      "get": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Get Leave Group Overview",
        "description": "**Requires permission:** *StaffMember*\n\nAdmin-only figures for one leave group and leave year: tracker coverage, allowance used, activity and TOIL",
        "operationId": "PanopticApiEndpointsLeaveRequestsOverviewGetLeaveGroupOverviewEndpoint",
        "parameters": [
          {
            "name": "groupId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "year",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetLeaveGroupOverview_Response"
                },
                "example": {
                  "groupName": "",
                  "year": 0,
                  "currentYear": 0,
                  "memberCount": 0,
                  "missingThisYear": 0,
                  "missingNextYear": 0,
                  "totalAllowance": 0.0,
                  "totalTaken": 0.0,
                  "totalRemaining": 0.0,
                  "expectedTakenByNow": 0.0,
                  "membersBehindPace": 0,
                  "membersFullyUsed": 0,
                  "pendingRequests": 0,
                  "offToday": 0,
                  "offThisWeek": 0,
                  "daysBookedAhead": 0.0,
                  "toilAccrued": 0.0,
                  "toilTaken": 0.0,
                  "byMonth": [],
                  "byType": [],
                  "members": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/LeaveRequests/Groups": {
      "get": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Get Leave Groups",
        "description": "**Requires permission:** *IT*\n\nGet a list of leave groups with optional pagination, sorting, filtering and includes",
        "operationId": "PanopticApiEndpointsLeaveRequestsGroupsGetLeaveGroupsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetLeaveGroups_Response"
                },
                "example": {
                  "groups": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Patch Leave Group",
        "description": "**Requires permission:** *IT*\n\nPatch a leave group",
        "operationId": "PanopticApiEndpointsLeaveRequestsGroupsPatchLeaveGroupEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchLeaveGroup_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Post Leave Group",
        "description": "**Requires permission:** *IT*\n\nPost a new leave group",
        "operationId": "PanopticApiEndpointsLeaveRequestsGroupsPostLeaveGroupEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostLeaveGroup_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/LeaveRequests/Groups/User": {
      "get": {
        "tags": [
          "Leaverequests"
        ],
        "summary": "Get User Leave Groups",
        "description": "**Requires permission:** *StaffMember*\n\nGet a list of leave groups for a specific user",
        "operationId": "PanopticApiEndpointsLeaveRequestsGroupsGetUserLeaveGroupsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUserLeaveGroups_Response"
                },
                "example": {
                  "groups": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Notices": {
      "delete": {
        "tags": [
          "Notices"
        ],
        "summary": "Delete an InAppNotice",
        "description": "**Requires permissions:** *IT* or *TonbridgeAppNoticeAdmin*\n\nDeletes an InAppNotice from the database.",
        "operationId": "PanopticApiEndpointsInAppNoticesDeleteNoticeEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Notice Deleted"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not delete Notice"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Notices"
        ],
        "summary": "Get Notices",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet all InAppNotices",
        "operationId": "PanopticApiEndpointsInAppNoticesGetNoticesEndpoint",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Got Notices",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetNotices_Response"
                },
                "example": {
                  "inAppNotices": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get notices"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Notices"
        ],
        "summary": "Update an InAppNotice",
        "description": "**Requires permissions:** *IT* or *TonbridgeAppNoticeAdmin*\n\nUpdates an existing InAppNotice in the database.",
        "operationId": "PanopticApiEndpointsInAppNoticesPatchNoticeEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchNotice_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - In App Notice Updated"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not update Notice"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Notices"
        ],
        "summary": "Create a new InAppNotice",
        "description": "**Requires permissions:** *IT* or *TonbridgeAppNoticeAdmin*\n\nCreates a new InAppNotice in the database.",
        "operationId": "PanopticApiEndpointsInAppNoticesPostNoticeEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostNotice_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - In App Notice Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not create Notice"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/HouseTours/{house}/{id}": {
      "delete": {
        "tags": [
          "Housetours"
        ],
        "summary": "Delete a house tour booking",
        "description": "**Requires permissions:** *Admin* or *Admissions* or *Housemaster* or *Matron*\n\nDelete a booking and its linked Outlook calendar events (staff + parent).",
        "operationId": "PanopticApiEndpointsHouseToursDeleteHouseTourEndpoint",
        "parameters": [
          {
            "name": "house",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Housetours"
        ],
        "summary": "Get a house tour booking",
        "description": "**Requires permissions:** *Admin* or *Admissions* or *Housemaster* or *Matron*\n\nOne OpenApply booking with applicant + parent detail, other bookings and same-school pupils.",
        "operationId": "PanopticApiEndpointsHouseToursGetHouseTourDetailEndpoint",
        "parameters": [
          {
            "name": "house",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetHouseTourDetail_Response"
                },
                "example": {
                  "parents": [],
                  "otherBookings": [],
                  "sameSchoolPupils": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Housetours"
        ],
        "summary": "Save a house tour comment",
        "description": "**Requires permissions:** *Admin* or *Admissions* or *Housemaster* or *Matron*\n\nSave the housemaster's comment on a booking.",
        "operationId": "PanopticApiEndpointsHouseToursPatchHouseTourCommentEndpoint",
        "parameters": [
          {
            "name": "house",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchHouseTourComment_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/HouseTours": {
      "get": {
        "tags": [
          "Housetours"
        ],
        "summary": "Get all house tour bookings",
        "description": "**Requires permissions:** *Admin* or *Admissions*\n\nAll OpenApply house tour bookings (Admin / Admissions).",
        "operationId": "PanopticApiEndpointsHouseToursGetHouseToursEndpoint",
        "parameters": [
          {
            "name": "house",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetHouseTours_Response"
                },
                "example": {
                  "bookings": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/HouseTours/Settings": {
      "get": {
        "tags": [
          "Housetours"
        ],
        "summary": "Get house tour settings",
        "description": "**Requires permissions:** *Admin* or *Admissions*\n\nThe open/void date windows for house tours (Admin / Admissions).",
        "operationId": "PanopticApiEndpointsHouseToursGetHouseTourSettingsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetHouseTourSettings_Response"
                },
                "example": {
                  "settings": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Housetours"
        ],
        "summary": "Update house tour settings",
        "description": "**Requires permissions:** *Admin* or *Admissions*\n\nUpsert house tour settings by name (Admin / Admissions).",
        "operationId": "PanopticApiEndpointsHouseToursPatchHouseTourSettingsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchHouseTourSettings_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/HouseTours/{house}": {
      "get": {
        "tags": [
          "Housetours"
        ],
        "summary": "Get house tour bookings for a house",
        "description": "**Requires permissions:** *Admin* or *Admissions* or *Housemaster* or *Matron*\n\nOpenApply house tour bookings for one house (Housemaster / Matron / Admin / Admissions).",
        "operationId": "PanopticApiEndpointsHouseToursGetHouseToursForHouseEndpoint",
        "parameters": [
          {
            "name": "house",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "house",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetHouseTours_Response"
                },
                "example": {
                  "bookings": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Houses": {
      "get": {
        "tags": [
          "Houses"
        ],
        "summary": "Get Houses",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *Guardian* or *Parent* or *Student* or *StudentFacing*\n\nGets a list of houses with sorting and filtering options.<br />Supported Includes: `Staff`, `Staff.Staff`",
        "operationId": "PanopticApiEndpointsHousesGetHousesEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got houses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetHouses_Response"
                },
                "example": {
                  "houses": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get houses"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Houses/Staff": {
      "delete": {
        "tags": [
          "Houses"
        ],
        "summary": "Delete House Staff",
        "description": "**Requires permission:** *IT*\n\nDelete a house staff member",
        "operationId": "PanopticApiEndpointsHousesStaffDeleteHouseStaffEndpoint",
        "parameters": [
          {
            "name": "houseStaffId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Deleted House Staff"
          },
          "400": {
            "description": "An Error Occurred - Could not delete House Staff"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Houses"
        ],
        "summary": "Get House Staff",
        "description": "**Requires permission:** *IT*\n\nGet house staff with pagination, filtering and sorting",
        "operationId": "PanopticApiEndpointsHousesStaffGetHouseStaffEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got House Staff",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetHouseStaff_Response"
                },
                "example": {
                  "houseStaff": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get House Staff"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Houses"
        ],
        "summary": "Update House Staff",
        "description": "**Requires permission:** *IT*\n\nUpdate an existing house staff member",
        "operationId": "PanopticApiEndpointsHousesStaffPatchHouseStaffEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchHouseStaff_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Updated House Staff"
          },
          "400": {
            "description": "An Error Occurred - Could not update House Staff"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Houses"
        ],
        "summary": "Create House Staff",
        "description": "**Requires permission:** *IT*\n\nCreate a new house staff member",
        "operationId": "PanopticApiEndpointsHousesStaffPostHouseStaffEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostHouseStaff_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Created House Staff"
          },
          "400": {
            "description": "An Error Occurred - Could not create House Staff"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Term": {
      "get": {
        "tags": [
          "Term"
        ],
        "summary": "Get Current Term Details",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nReturns the current academic year's terms with the termly-health and catering form windows.",
        "operationId": "PanopticApiEndpointsHealthGetCurrentTermEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Returned term details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCurrentTerm_Response"
                },
                "example": {
                  "cateringFormOpen": false,
                  "termFormOpen": false
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get term details"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/health": {
      "get": {
        "tags": [
          "Hide",
          "Health"
        ],
        "description": "**Auth:** Anonymous - no token required.",
        "operationId": "PanopticApiEndpointsHealthGetHealthEndpoint",
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/TermlyHealth": {
      "get": {
        "tags": [
          "Termlyhealth"
        ],
        "summary": "Get All Termly Health Forms",
        "description": "**Requires permissions:** *AccidentReportingViewers* or *IT*\n\nReturns this term's termly health forms (admin view).",
        "operationId": "PanopticApiEndpointsHealthGetTermlyHealthFormsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Returned forms",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTermlyHealthList_Response"
                },
                "example": {
                  "forms": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get forms"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Termlyhealth"
        ],
        "summary": "Submit a Termly Health Form",
        "description": "**Requires permissions:** *Guardian* or *Parent*\n\nSubmits a health form for one of the parent's children. The form is open all year: parents may submit whenever something changes, not only in a termly window. A submission that reports an actual change emails the pupil's housemaster and the Medical Centre.",
        "operationId": "PanopticApiEndpointsHealthPostTermlyHealthFormEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostTermlyHealth_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Not permitted to submit for this pupil"
          },
          "200": {
            "description": "Success - Form submitted"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/TermlyHealth/House/{houseCode}": {
      "get": {
        "tags": [
          "Termlyhealth"
        ],
        "summary": "Get a House's Termly Health Forms",
        "description": "**Requires permissions:** *Housemaster* or *Matron*\n\nReturns this term's termly health forms for a house.",
        "operationId": "PanopticApiEndpointsHealthGetTermlyHealthHouseFormsEndpoint",
        "parameters": [
          {
            "name": "houseCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Returned forms",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTermlyHealthList_Response"
                },
                "example": {
                  "forms": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get forms"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/TermlyHealth/Pupil/{pupilId}": {
      "get": {
        "tags": [
          "Termlyhealth"
        ],
        "summary": "Get a Pupil's Latest Termly Health Form",
        "description": "**Requires permissions:** *Guardian* or *Parent*\n\nReturns the most recent termly health form for a pupil (parents of that pupil only).",
        "operationId": "PanopticApiEndpointsHealthGetTermlyHealthPupilFormEndpoint",
        "parameters": [
          {
            "name": "pupilId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Not permitted to view this pupil's form"
          },
          "200": {
            "description": "Success - Returned form",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTermlyHealthPupil_Response"
                },
                "example": {
                  "id": 0
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/google/book": {
      "get": {
        "tags": [
          "Google"
        ],
        "summary": "Get Google Book",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet Google Book by ISBN, Author or Title",
        "operationId": "PanopticApiEndpointsGoogleGetGoogleBookEndpoint",
        "parameters": [
          {
            "name": "isbn",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "author",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "title",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetGoogleBook_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/google/books": {
      "get": {
        "tags": [
          "Google"
        ],
        "summary": "Get Search Google Books",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nSearch Google Books by Query",
        "operationId": "PanopticApiEndpointsGoogleGetSearchGoogleBooksEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSearchGoogleBooks_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Tickets": {
      "get": {
        "tags": [
          "Tickets"
        ],
        "summary": "Get Tickets",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet Tickets with optionally provide a filter to get a specific ticket by id",
        "operationId": "PanopticApiEndpointsFreshserviceGetTicketsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTickets_Response"
                },
                "example": {
                  "tickets": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Tickets"
        ],
        "summary": "Post Ticket",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nPost a ticket to the Freshservice helpdesk",
        "operationId": "PanopticApiEndpointsFreshservicePostTicketEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostTicket_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Tickets/Reply": {
      "post": {
        "tags": [
          "Tickets"
        ],
        "summary": "Post Ticket Reply",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nPost a reply to a ticket",
        "operationId": "PanopticApiEndpointsFreshservicePostTicketReplyEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostTicketReply_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/FreePeriods/Staff": {
      "get": {
        "tags": [
          "Freeperiods"
        ],
        "summary": "Get Free Periods for Staff",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nGet Free Periods for Staff",
        "operationId": "PanopticApiEndpointsFreePeriodsGetFreePeriodsForStaffEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFreePeriodsForStaff_Response"
                },
                "example": {
                  "freePeriods": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/FreePeriods/Student": {
      "get": {
        "tags": [
          "Freeperiods"
        ],
        "summary": "Get Free Periods for Students",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nGet Free Periods for Students",
        "operationId": "PanopticApiEndpointsFreePeriodsGetFreePeriodForStudentsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFreePeriodsForStudents_Response"
                },
                "example": {
                  "freePeriods": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/FreePeriods/Rooms": {
      "get": {
        "tags": [
          "Freeperiods"
        ],
        "summary": "Rooms with no lesson timetabled",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nOne entry per day and period, listing the rooms nothing is timetabled into. Science rooms are flagged: that department allocates its own rooms outside the timetable, so a free-looking Science room may still be in use.",
        "operationId": "PanopticApiEndpointsFreePeriodsGetFreeRoomsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFreeRooms_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Forms": {
      "get": {
        "tags": [
          "Forms"
        ],
        "summary": "Get Forms",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nGet Forms with filtering, sorting and paging",
        "operationId": "PanopticApiEndpointsFormsGetFormsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetForms_Response"
                },
                "example": {
                  "forms": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/FireChecks/Compliance": {
      "get": {
        "tags": [
          "Firechecks"
        ],
        "summary": "Get Whole-School Fire Check Compliance",
        "description": "**Requires permission:** *FirecheckAdmin*\n\nReturns every in-scope house against every week of the academic year, plus per-term day and night drill state. Feeds BOTH the on-screen compliance view and the exported composite sheet, so the two cannot disagree. One projected query.",
        "operationId": "PanopticApiEndpointsFireChecksGetFireCheckComplianceEndpoint",
        "parameters": [
          {
            "name": "academicYear",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden - Requires FirecheckAdmin"
          },
          "200": {
            "description": "Success - Returned compliance",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFireCheckCompliance_Response"
                },
                "example": {
                  "houses": [],
                  "termPeriods": []
                }
              }
            }
          },
          "409": {
            "description": "Conflict - No term dates for the requested academic year"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/FireChecks/House/{houseId}": {
      "get": {
        "tags": [
          "Firechecks"
        ],
        "summary": "Get a House's Fire Check Record",
        "description": "**Requires permission:** *StaffMember*\n\nReturns a house's term periods with per-week and per-drill state, plus its submission history (withdrawn records included and marked). Term periods and weeks are derived from the School's term records.",
        "operationId": "PanopticApiEndpointsFireChecksGetFireCheckHouseEndpoint",
        "parameters": [
          {
            "name": "houseId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "academicYear",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden - Not house staff for this house"
          },
          "200": {
            "description": "Success - Returned the house's record",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFireCheckHouse_Response"
                },
                "example": {
                  "houseId": "00000000-0000-0000-0000-000000000000",
                  "requiresNightDrill": false,
                  "termPeriods": [],
                  "submissions": []
                }
              }
            }
          },
          "404": {
            "description": "Not Found - House not found or not in scope"
          },
          "409": {
            "description": "Conflict - No term dates for the requested academic year"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/FireChecks/Houses": {
      "get": {
        "tags": [
          "Firechecks"
        ],
        "summary": "Get Houses the Caller May Fire-Check",
        "description": "**Requires permission:** *StaffMember*\n\nReturns the in-scope houses the caller may submit fire checks for — their own house-staff houses, or all of them for a FirecheckAdmin. In-scope status and night-drill applicability are derived from the house records, not stored.",
        "operationId": "PanopticApiEndpointsFireChecksGetFireCheckHousesEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Returned houses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFireCheckHouses_Response"
                },
                "example": {
                  "houses": [],
                  "canSelectMultiple": false
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get houses"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/FireChecks/Submissions/{id}": {
      "patch": {
        "tags": [
          "Firechecks"
        ],
        "summary": "Amend a Fire Check Submission",
        "description": "**Requires permission:** *StaffMember*\n\nAmends a submission in place, recording who changed it and when. Previous values are NOT retained — this endpoint deliberately holds no field-level history. The house cannot be changed; withdraw and re-submit instead.",
        "operationId": "PanopticApiEndpointsFireChecksPatchFireCheckSubmissionEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchFireCheckSubmission_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden - Not house staff for this record's house"
          },
          "200": {
            "description": "Success - Submission amended",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PatchFireCheckSubmission_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "Bad Request - Validation failed"
          },
          "404": {
            "description": "Not Found - Submission not found"
          },
          "409": {
            "description": "Conflict - Submission already withdrawn"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/FireChecks/Batches/{batchId}/Withdraw": {
      "post": {
        "tags": [
          "Firechecks"
        ],
        "summary": "Withdraw a Whole Fire Check Batch",
        "description": "**Requires permission:** *StaffMember*\n\nWithdraws every record created by one submission, in one action. The remedy for a mis-entered multi-house round, which can be up to eighteen records. Atomic; already-withdrawn records are left as they are.",
        "operationId": "PanopticApiEndpointsFireChecksPostFireCheckBatchWithdrawEndpoint",
        "parameters": [
          {
            "name": "batchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden - Not staff of every house in the batch"
          },
          "200": {
            "description": "Success - Batch withdrawn",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostFireCheckWithdraw_Response"
                },
                "example": {
                  "withdrawnCount": 0
                }
              }
            }
          },
          "404": {
            "description": "Not Found - Batch not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/FireChecks/Submissions": {
      "post": {
        "tags": [
          "Firechecks"
        ],
        "summary": "Record a Fire Check and/or Fire Drill",
        "description": "**Requires permission:** *StaffMember*\n\nRecords a submission against one house, or several at once for a FirecheckAdmin (an alarm-test round). Items and a drill may be recorded together — the legacy form's either/or restriction is deliberately gone. Multi-house is all-or-nothing and every created record shares one BatchId.",
        "operationId": "PanopticApiEndpointsFireChecksPostFireCheckSubmissionEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostFireCheckSubmission_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden - Not house staff, or multi-house without FirecheckAdmin"
          },
          "201": {
            "description": "Created - Submission(s) recorded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostFireCheckSubmission_Response"
                },
                "example": {
                  "batchId": "00000000-0000-0000-0000-000000000000",
                  "created": []
                }
              }
            }
          },
          "400": {
            "description": "Bad Request - Validation failed"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/FireChecks/Submissions/{id}/Withdraw": {
      "post": {
        "tags": [
          "Firechecks"
        ],
        "summary": "Withdraw a Fire Check Submission",
        "description": "**Requires permission:** *StaffMember*\n\nMarks a submission withdrawn. It is retained and remains visible in the house's history, but satisfies no week and no termly drill — so its week may revert to outstanding, including for a term already past. Withdrawal is never a delete. Idempotent.",
        "operationId": "PanopticApiEndpointsFireChecksPostFireCheckWithdrawEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden - Not house staff for this record's house"
          },
          "200": {
            "description": "Success - Submission withdrawn",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostFireCheckWithdraw_Response"
                },
                "example": {
                  "withdrawnCount": 0
                }
              }
            }
          },
          "404": {
            "description": "Not Found - Submission not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Files/content": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "Get File Content",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet the content of a file from a SharePoint site",
        "operationId": "PanopticApiEndpointsFilesGetFileContentEndpoint",
        "parameters": [
          {
            "name": "siteId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "driveId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "fileId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Got Drive Item and Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileContent_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get Drive Item and Content"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Lists/content": {
      "get": {
        "tags": [
          "Lists"
        ],
        "summary": "Get List Item",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet the content of a file from a SharePoint site",
        "operationId": "PanopticApiEndpointsFilesGetListItemEndpoint",
        "parameters": [
          {
            "name": "siteId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "listId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "fileId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "siteUrl",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Got Drive Item and Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetListItem_Response"
                },
                "example": {
                  "staffMember": false
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get Drive Item or Content"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Lists": {
      "get": {
        "tags": [
          "Lists"
        ],
        "summary": "Get List Items",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet a list of drive items for the given site, drive and folder",
        "operationId": "PanopticApiEndpointsFilesGetListItemsEndpoint",
        "parameters": [
          {
            "name": "siteId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "listId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "parentId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "handbooks",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Got List Items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetListItems_Response"
                },
                "example": {
                  "listItems": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get List Items"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Files": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "Get List of Parent Folders",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet a list of drive items for the given site, drive and folder",
        "operationId": "PanopticApiEndpointsFilesGetListOfParentFoldersEndpoint",
        "parameters": [
          {
            "name": "siteId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "driveId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "folderId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Got Drive Items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetListOfParentFolders_Response"
                },
                "example": {
                  "driveItems": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could Not Get Drive Items"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/UploadFiles": {
      "post": {
        "tags": [
          "Uploadfiles"
        ],
        "summary": "Post Upload File",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nPost Upload File.",
        "operationId": "PanopticApiEndpointsFilesPostUploadFileEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostUploadFile_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostUploadFile_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Favourites": {
      "delete": {
        "tags": [
          "Favourites"
        ],
        "summary": "Delete Favourite",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nDelete a favourite using either the link or the id",
        "operationId": "PanopticApiEndpointsFavouritesDeleteFavouriteEndpoint",
        "parameters": [
          {
            "name": "link",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Favourite Deleted"
          },
          "401": {
            "description": "Unauthorized"
          },
          "400": {
            "description": "An Error Occurred - Could not delete favourite"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Favourites"
        ],
        "summary": "Get User Favourites",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet a list of user favourites with optional pagination, sorting and filtering",
        "operationId": "PanopticApiEndpointsFavouritesGetFavouritesEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - A list of favourites",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFavourites_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get favourites"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Favourites"
        ],
        "summary": "Patch Favourite",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nUpdate the Name, Icon or Colour of a Favourite",
        "operationId": "PanopticApiEndpointsFavouritesPatchFavouriteEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchFavourite_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Favourite Updated"
          },
          "401": {
            "description": "Unauthorized"
          },
          "400": {
            "description": "An Error Occurred - Could not update favourite"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Favourites"
        ],
        "summary": "Post Favourite",
        "description": "**Auth:** Authenticated - any signed-in user.",
        "operationId": "PanopticApiEndpointsFavouritesPostFavouriteEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostFavourite_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/external/v1/whoami": {
      "get": {
        "tags": [
          "External"
        ],
        "summary": "External - Who am I",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nWorked example of a scope-gated external endpoint. Returns the calling client's identity, granted permissions and allowed endpoints. Requires a bearer token from the external token endpoint, and the client must have been granted access to this path (enforced by ExternalApiAccessPreProcessor).",
        "operationId": "PanopticApiEndpointsExternalGetWhoAmIEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWhoAmI_Response"
                }
              }
            }
          },
          "403": {
            "description": "Client not granted access to this endpoint"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          },
          {
            "ServiceAccount (OAuth2)": []
          }
        ]
      }
    },
    "/oneroster/academicSessions": {
      "get": {
        "tags": [
          "Oneroster"
        ],
        "summary": "OneRoster - Get all academic sessions",
        "description": "**Requires permission:** *ServiceAccount*\n\nOneRoster v1.1 GetAllAcademicSessions. Academic years map to schoolYear, terms to term. Supports offset/limit paging and status / dateLastModified filtering.",
        "operationId": "PanopticApiEndpointsExternalOneRosterGetOneRosterAcademicSessionsEndpoint1",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller is not an authorised service account"
          },
          "200": {
            "description": "Success - academic sessions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcademicSessionSetResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          },
          {
            "ServiceAccount (OAuth2)": []
          }
        ]
      }
    },
    "/ims/oneroster/v1p1/academicSessions": {
      "get": {
        "tags": [
          "Ims"
        ],
        "summary": "OneRoster - Get all academic sessions",
        "description": "**Requires permission:** *ServiceAccount*\n\nOneRoster v1.1 GetAllAcademicSessions. Academic years map to schoolYear, terms to term. Supports offset/limit paging and status / dateLastModified filtering.",
        "operationId": "PanopticApiEndpointsExternalOneRosterGetOneRosterAcademicSessionsEndpoint2",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller is not an authorised service account"
          },
          "200": {
            "description": "Success - academic sessions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcademicSessionSetResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          },
          {
            "ServiceAccount (OAuth2)": []
          }
        ]
      }
    },
    "/oneroster/classes": {
      "get": {
        "tags": [
          "Oneroster"
        ],
        "summary": "OneRoster - Get all classes",
        "description": "**Requires permission:** *ServiceAccount*\n\nOneRoster v1.1 GetAllClasses. Panoptic classes plus a homeroom class per House. Supports offset/limit paging and status / dateLastModified filtering.",
        "operationId": "PanopticApiEndpointsExternalOneRosterGetOneRosterClassesEndpoint1",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller is not an authorised service account"
          },
          "200": {
            "description": "Success - classes",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassSetResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          },
          {
            "ServiceAccount (OAuth2)": []
          }
        ]
      }
    },
    "/ims/oneroster/v1p1/classes": {
      "get": {
        "tags": [
          "Ims"
        ],
        "summary": "OneRoster - Get all classes",
        "description": "**Requires permission:** *ServiceAccount*\n\nOneRoster v1.1 GetAllClasses. Panoptic classes plus a homeroom class per House. Supports offset/limit paging and status / dateLastModified filtering.",
        "operationId": "PanopticApiEndpointsExternalOneRosterGetOneRosterClassesEndpoint2",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller is not an authorised service account"
          },
          "200": {
            "description": "Success - classes",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassSetResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          },
          {
            "ServiceAccount (OAuth2)": []
          }
        ]
      }
    },
    "/oneroster/courses": {
      "get": {
        "tags": [
          "Oneroster"
        ],
        "summary": "OneRoster - Get all courses",
        "description": "**Requires permission:** *ServiceAccount*\n\nOneRoster v1.1 GetAllCourses (optional). Maps Panoptic subjects to courses. Supports offset/limit paging and status / dateLastModified filtering.",
        "operationId": "PanopticApiEndpointsExternalOneRosterGetOneRosterCoursesEndpoint1",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller is not an authorised service account"
          },
          "200": {
            "description": "Success - courses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CourseSetResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          },
          {
            "ServiceAccount (OAuth2)": []
          }
        ]
      }
    },
    "/ims/oneroster/v1p1/courses": {
      "get": {
        "tags": [
          "Ims"
        ],
        "summary": "OneRoster - Get all courses",
        "description": "**Requires permission:** *ServiceAccount*\n\nOneRoster v1.1 GetAllCourses (optional). Maps Panoptic subjects to courses. Supports offset/limit paging and status / dateLastModified filtering.",
        "operationId": "PanopticApiEndpointsExternalOneRosterGetOneRosterCoursesEndpoint2",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller is not an authorised service account"
          },
          "200": {
            "description": "Success - courses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CourseSetResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          },
          {
            "ServiceAccount (OAuth2)": []
          }
        ]
      }
    },
    "/oneroster/demographics": {
      "get": {
        "tags": [
          "Oneroster"
        ],
        "summary": "OneRoster - Get all demographics",
        "description": "**Requires permission:** *ServiceAccount*\n\nOneRoster v1.1 GetAllDemographics (optional). Pupil birthDate + sex, keyed by the user sourcedId (UPI). Supports offset/limit paging and status / dateLastModified filtering.",
        "operationId": "PanopticApiEndpointsExternalOneRosterGetOneRosterDemographicsEndpoint1",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller is not an authorised service account"
          },
          "200": {
            "description": "Success - demographics",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DemographicsSetResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          },
          {
            "ServiceAccount (OAuth2)": []
          }
        ]
      }
    },
    "/ims/oneroster/v1p1/demographics": {
      "get": {
        "tags": [
          "Ims"
        ],
        "summary": "OneRoster - Get all demographics",
        "description": "**Requires permission:** *ServiceAccount*\n\nOneRoster v1.1 GetAllDemographics (optional). Pupil birthDate + sex, keyed by the user sourcedId (UPI). Supports offset/limit paging and status / dateLastModified filtering.",
        "operationId": "PanopticApiEndpointsExternalOneRosterGetOneRosterDemographicsEndpoint2",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller is not an authorised service account"
          },
          "200": {
            "description": "Success - demographics",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DemographicsSetResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          },
          {
            "ServiceAccount (OAuth2)": []
          }
        ]
      }
    },
    "/oneroster/enrollments": {
      "get": {
        "tags": [
          "Oneroster"
        ],
        "summary": "OneRoster - Get all enrollments",
        "description": "**Requires permission:** *ServiceAccount*\n\nOneRoster v1.1 GetAllEnrollments. Class enrollments plus House class enrollments (house staff + tutors as teachers, house pupils as students). Supports offset/limit and status filtering.",
        "operationId": "PanopticApiEndpointsExternalOneRosterGetOneRosterEnrollmentsEndpoint1",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller is not an authorised service account"
          },
          "200": {
            "description": "Success - enrollments",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnrollmentSetResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          },
          {
            "ServiceAccount (OAuth2)": []
          }
        ]
      }
    },
    "/ims/oneroster/v1p1/enrollments": {
      "get": {
        "tags": [
          "Ims"
        ],
        "summary": "OneRoster - Get all enrollments",
        "description": "**Requires permission:** *ServiceAccount*\n\nOneRoster v1.1 GetAllEnrollments. Class enrollments plus House class enrollments (house staff + tutors as teachers, house pupils as students). Supports offset/limit and status filtering.",
        "operationId": "PanopticApiEndpointsExternalOneRosterGetOneRosterEnrollmentsEndpoint2",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller is not an authorised service account"
          },
          "200": {
            "description": "Success - enrollments",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnrollmentSetResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          },
          {
            "ServiceAccount (OAuth2)": []
          }
        ]
      }
    },
    "/oneroster/orgs": {
      "get": {
        "tags": [
          "Oneroster"
        ],
        "summary": "OneRoster - Get all orgs",
        "description": "**Requires permission:** *ServiceAccount*\n\nOneRoster v1.1 GetAllOrgs. Tonbridge is exposed as a single school org. Supports offset/limit paging and status / dateLastModified filtering.",
        "operationId": "PanopticApiEndpointsExternalOneRosterGetOneRosterOrgsEndpoint1",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller is not an authorised service account"
          },
          "200": {
            "description": "Success - orgs",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrgSetResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          },
          {
            "ServiceAccount (OAuth2)": []
          }
        ]
      }
    },
    "/ims/oneroster/v1p1/orgs": {
      "get": {
        "tags": [
          "Ims"
        ],
        "summary": "OneRoster - Get all orgs",
        "description": "**Requires permission:** *ServiceAccount*\n\nOneRoster v1.1 GetAllOrgs. Tonbridge is exposed as a single school org. Supports offset/limit paging and status / dateLastModified filtering.",
        "operationId": "PanopticApiEndpointsExternalOneRosterGetOneRosterOrgsEndpoint2",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller is not an authorised service account"
          },
          "200": {
            "description": "Success - orgs",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrgSetResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          },
          {
            "ServiceAccount (OAuth2)": []
          }
        ]
      }
    },
    "/oneroster/users": {
      "get": {
        "tags": [
          "Oneroster"
        ],
        "summary": "OneRoster - Get all users",
        "description": "**Requires permission:** *ServiceAccount*\n\nOneRoster v1.1 GetAllUsers. Pupils map to role=student, staff to role=teacher. Supports offset/limit paging and status / dateLastModified filtering.",
        "operationId": "PanopticApiEndpointsExternalOneRosterGetOneRosterUsersEndpoint1",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller is not an authorised service account"
          },
          "200": {
            "description": "Success - users",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserSetResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          },
          {
            "ServiceAccount (OAuth2)": []
          }
        ]
      }
    },
    "/ims/oneroster/v1p1/users": {
      "get": {
        "tags": [
          "Ims"
        ],
        "summary": "OneRoster - Get all users",
        "description": "**Requires permission:** *ServiceAccount*\n\nOneRoster v1.1 GetAllUsers. Pupils map to role=student, staff to role=teacher. Supports offset/limit paging and status / dateLastModified filtering.",
        "operationId": "PanopticApiEndpointsExternalOneRosterGetOneRosterUsersEndpoint2",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller is not an authorised service account"
          },
          "200": {
            "description": "Success - users",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserSetResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          },
          {
            "ServiceAccount (OAuth2)": []
          }
        ]
      }
    },
    "/ExternalSpeaker/All": {
      "get": {
        "tags": [
          "Externalspeaker"
        ],
        "summary": "Get all External Speaker Forms",
        "description": "**Requires permission:** *ExternalSpeakerAdmin*\n\nReturns every external speaker form, newest visit first. Admin only.",
        "operationId": "PanopticApiEndpointsExternalSpeakersGetAllSpeakerFormsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Returned speaker forms",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSpeakerForms_Response"
                },
                "example": {
                  "forms": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get speaker forms"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ExternalSpeaker": {
      "get": {
        "tags": [
          "Externalspeaker"
        ],
        "summary": "Get the user's External Speaker Forms",
        "description": "**Requires permission:** *StaffMember*\n\nReturns the external speaker forms submitted by the logged-in user, newest visit first.",
        "operationId": "PanopticApiEndpointsExternalSpeakersGetUserSpeakerFormsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Returned speaker forms",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSpeakerForms_Response"
                },
                "example": {
                  "forms": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get speaker forms"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Externalspeaker"
        ],
        "summary": "Submit an External Speaker Form",
        "description": "**Requires permission:** *StaffMember*\n\nSubmits a new external speaker form and notifies the External Speaker admins.",
        "operationId": "PanopticApiEndpointsExternalSpeakersPostSpeakerFormEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSpeakerForm_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Speaker form created"
          },
          "400": {
            "description": "An Error Occurred - Could not create speaker form"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Exams/Settings": {
      "get": {
        "tags": [
          "Exams"
        ],
        "summary": "Get all exam settings",
        "description": "**Requires permission:** *ExamAdmin*\n\nGet all exam settings",
        "operationId": "PanopticApiEndpointsExamsSettingsGetExamSettingsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetExamSettings_Response"
                },
                "example": {
                  "examSettings": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Exams"
        ],
        "summary": "Update an exam setting",
        "description": "**Requires permission:** *ExamAdmin*\n\nUpdate an exam setting",
        "operationId": "PanopticApiEndpointsExamsSettingsPatchExamSettingEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchExamSetting_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Exams"
        ],
        "summary": "Create a new exam setting",
        "description": "**Requires permission:** *ExamAdmin*\n\nCreate a new exam setting",
        "operationId": "PanopticApiEndpointsExamsSettingsPostExamSettingEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostExamSetting_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ReviewOfResults/Open": {
      "get": {
        "tags": [
          "Reviewofresults"
        ],
        "summary": "Is Review of Results Open",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGets whether the review of results system is open for the current user",
        "operationId": "PanopticApiEndpointsExamsReviewOfResultsGetReviewOfResultsOpenEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReviewOfResultsOpen_Response"
                },
                "example": {
                  "open": false
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ReviewOfResults/Wording": {
      "get": {
        "tags": [
          "Reviewofresults"
        ],
        "summary": "Get Wording",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet Wording for Review of Result Screens",
        "operationId": "PanopticApiEndpointsExamsReviewOfResultsWordingGetWordingsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReviewOfResultWordings_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Reviewofresults"
        ],
        "summary": "Patch Wording",
        "description": "**Requires permission:** *ExamAdmin*\n\nPatch Wording for Review of Result Screens",
        "operationId": "PanopticApiEndpointsExamsReviewOfResultsWordingPatchWordingEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchReviewOfResultWording_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Reviewofresults"
        ],
        "summary": "Post Wording",
        "description": "**Requires permission:** *ExamAdmin*\n\nPost Wording for Review of Result Screens",
        "operationId": "PanopticApiEndpointsExamsReviewOfResultsWordingPostWordingEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostReviewOfResultWording_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ReviewOfResults/PostResultServices": {
      "get": {
        "tags": [
          "Reviewofresults"
        ],
        "summary": "Get Services",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet Services for Review of Result Screens",
        "operationId": "PanopticApiEndpointsExamsReviewOfResultsPostResultServicesGetServicesEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReviewOfResultServices_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Reviewofresults"
        ],
        "summary": "Patch Service",
        "description": "**Requires permission:** *ExamAdmin*\n\nPatch Service for Review of Result Screens",
        "operationId": "PanopticApiEndpointsExamsReviewOfResultsPostResultServicesPatchServiceEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchReviewOfResultService_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Reviewofresults"
        ],
        "summary": "Post Service",
        "description": "**Requires permission:** *ExamAdmin*\n\nPost Service for Review of Result Screens",
        "operationId": "PanopticApiEndpointsExamsReviewOfResultsPostResultServicesPostServiceEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostReviewOfResultService_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ReviewOfResults/Forms": {
      "get": {
        "tags": [
          "Reviewofresults"
        ],
        "summary": "Get Forms",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet Forms, the forms it gets depend on the Type Param and the User's permissions",
        "operationId": "PanopticApiEndpointsExamsReviewOfResultsFormsGetFormsEndpoint",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReviewOfResultsForms_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Reviewofresults"
        ],
        "summary": "Patch a Review of Results Form",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nPatch a Review of Results Form",
        "operationId": "PanopticApiEndpointsExamsReviewOfResultsFormsPatchFormEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchReviewOfResultForm_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Reviewofresults"
        ],
        "summary": "Post a Review of Results Form",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nPost a Review of Results Form",
        "operationId": "PanopticApiEndpointsExamsReviewOfResultsFormsPostFormEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostReviewOfResultForm_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Exams/Results/Import": {
      "post": {
        "tags": [
          "Exams"
        ],
        "summary": "Import exam results, component marks and basedata",
        "description": "**Requires permission:** *ExamAdmin*\n\nAccepts whatever the boards sent — JCQ a2c XML, JCQ EDI results, a Cambridge International spreadsheet, or JCQ basedata definition files — one file or several, and saves subject results, component marks and board definitions. Each file's format is detected from its contents, not its name. WorkbookMark chooses the raw, adjusted or weighted column of a spreadsheet; DuplicateHandling decides whether an outcome that already exists is added alongside or replaced; DryRun reports what would happen and writes nothing.",
        "operationId": "PanopticApiEndpointsExamsImportPostImportExamResultsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/PostImportComponentMarks_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Imported",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostImportComponentMarks_Response"
                },
                "example": {
                  "componentMarks": [],
                  "files": [],
                  "dryRun": false,
                  "inserted": 0,
                  "updated": 0,
                  "existingDuplicates": 0,
                  "duplicatesWithinUpload": 0,
                  "results": 0,
                  "definitions": 0,
                  "distinctComponentCodes": 0,
                  "matchedComponentCodes": 0
                }
              }
            }
          },
          "400": {
            "description": "A file could not be read, or held nothing"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Exams/Results": {
      "get": {
        "tags": [
          "Exams"
        ],
        "summary": "Get Exam Results for a Student",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet Exam Results for a Student, this will only return results that are visible to the logged in user",
        "operationId": "PanopticApiEndpointsExamsExamResultsGetExamResultsForStudentEndpoint",
        "parameters": [
          {
            "name": "studentId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "currentYear",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "includeComponentMarks",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetExamResultsForStudent_Response"
                },
                "example": {
                  "results": [],
                  "examSettings": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Exams/Results/School": {
      "get": {
        "tags": [
          "Exams"
        ],
        "summary": "Get Exam Results for the whole School",
        "description": "**Requires permission:** *ExamAdmin*\n\nGet every pupil's exam results and component marks for one exam year, or a single pupil's full history when Upi is supplied. Release dates in EX_Settings are applied unless BypassLockdown is set by a caller holding ExamAdmin.",
        "operationId": "PanopticApiEndpointsExamsExamResultsGetSchoolExamResultsEndpoint",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "upi",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "level",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "includeComponentMarks",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "bypassLockdown",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSchoolExamResults_Response"
                },
                "example": {
                  "results": [],
                  "examSettings": [],
                  "availableYears": [],
                  "lockdownBypassed": false,
                  "hiddenByLockdown": 0,
                  "componentMarksVisible": false
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Exams/Results/School/Summary": {
      "get": {
        "tags": [
          "Exams"
        ],
        "summary": "Get whole-School exam analytics",
        "description": "**Requires permission:** *ExamAdmin*\n\nHeadline attainment, grade distribution and subject comparison for one exam year, plus a per-level trend across every year. Release dates in EX_Settings are applied unless BypassLockdown is set by a caller holding ExamAdmin.",
        "operationId": "PanopticApiEndpointsExamsExamResultsGetSchoolExamResultsSummaryEndpoint",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "bypassLockdown",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSchoolExamResultsSummary_Response"
                },
                "example": {
                  "availableYears": [],
                  "gradeDistribution": [],
                  "levelSummaries": [],
                  "subjectSummaries": [],
                  "candidateSummaries": [],
                  "houseSummaries": [],
                  "yearTrend": [],
                  "examSettings": [],
                  "lockdownBypassed": false,
                  "hiddenLevels": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Exams/OptionLinks": {
      "get": {
        "tags": [
          "Exams"
        ],
        "summary": "Get all Exam Option Subject Links",
        "description": "**Requires permission:** *ExamAdmin*\n\nGet all Exam Option Subject Links, and the exam options with no links.",
        "operationId": "PanopticApiEndpointsExamsExamOptionLinksGetLinksEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetLinks_Response"
                },
                "example": {
                  "links": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Exams"
        ],
        "summary": "Update an Exam Option Subject Link",
        "description": "**Requires permission:** *ExamAdmin*\n\nUpdate an Exam Option Subject Link",
        "operationId": "PanopticApiEndpointsExamsExamOptionLinksPatchLinkEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchLink_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Exams"
        ],
        "summary": "Create a new Exam Option Subject Link",
        "description": "**Requires permission:** *ExamAdmin*\n\nCreate a new Exam Option Subject Link",
        "operationId": "PanopticApiEndpointsExamsExamOptionLinksPostLinkEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostLink_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "put": {
        "tags": [
          "Exams"
        ],
        "summary": "Update or create an Exam Option Subject Link",
        "description": "**Requires permission:** *ExamAdmin*\n\nUpdate or create an Exam Option Subject Link",
        "operationId": "PanopticApiEndpointsExamsExamOptionLinksPutLinkEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutLink_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Exams/Boards": {
      "get": {
        "tags": [
          "Exams"
        ],
        "summary": "Get Exam Boards",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet Exam Boards",
        "operationId": "PanopticApiEndpointsExamsExamBoardsGetExamBoardsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetExamBoards_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Evolve/Visits": {
      "get": {
        "tags": [
          "Evolve"
        ],
        "summary": "Get EVOLVE Visits",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nConverts the EVOLVE visits XML API into JSON with optional paging, sorting and filtering using the same `filter` and `sort` query parameters as the rest of the Panoptic API.",
        "operationId": "PanopticApiEndpointsEvolveGetEvolveVisitsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "sDate",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "eDate",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEvolveVisits_Response"
                },
                "example": {
                  "upstreamEvents": 0,
                  "visits": []
                }
              }
            }
          },
          "400": {
            "description": "Invalid filter or sort"
          },
          "500": {
            "description": "EVOLVE API key is not configured or upstream request failed"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Event/Session": {
      "patch": {
        "tags": [
          "Event"
        ],
        "summary": "Update an event session",
        "description": "**Requires permission:** *StaffMember*\n\nUpdates a session on an event. Only an owner of the event may update sessions.",
        "operationId": "PanopticApiEndpointsEventsSessionsPatchEventSessionEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEventSession_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Session updated"
          },
          "400": {
            "description": "An Error Occurred - See Errors"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Event"
        ],
        "summary": "Create an event session",
        "description": "**Requires permission:** *StaffMember*\n\nAdds a session to an event. Only an owner of the event may add sessions.",
        "operationId": "PanopticApiEndpointsEventsSessionsPostEventSessionEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEventSession_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Session created"
          },
          "400": {
            "description": "An Error Occurred - See Errors"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Event/Question": {
      "patch": {
        "tags": [
          "Event"
        ],
        "summary": "Update an event question",
        "description": "**Requires permission:** *StaffMember*\n\nUpdates a question on an event. Only an owner of the event may update questions.",
        "operationId": "PanopticApiEndpointsEventsQuestionsPatchEventQuestionEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEventQuestion_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Question updated"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Event"
        ],
        "summary": "Add an event question",
        "description": "**Requires permission:** *StaffMember*\n\nAdds a question to an event. Only an owner of the event may add questions.",
        "operationId": "PanopticApiEndpointsEventsQuestionsPostEventQuestionEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEventQuestion_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Question added"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Event": {
      "get": {
        "tags": [
          "Event"
        ],
        "summary": "Get Event Details",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nReturns an event with its questions and sessions. Access=Owner returns the full organiser view (attendees, answers, owners); Access=Attendee returns the caller's own attendee view plus anonymised attendees.",
        "operationId": "PanopticApiEndpointsEventsDetailsGetEventDetailsEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "access",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Got Event Details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEventDetails_Response"
                },
                "example": {
                  "owners": [],
                  "questions": [],
                  "sessions": [],
                  "attendees": [],
                  "answers": [],
                  "anonAttendees": [],
                  "id": 0,
                  "name": "",
                  "organiserEmail": "",
                  "organiserName": "",
                  "start": "0001-01-01T00:00:00",
                  "end": "0001-01-01T00:00:00",
                  "signupType": 0,
                  "supportQR": false,
                  "enableWaitlist": false,
                  "published": false,
                  "includeInPD": false,
                  "photoType": 0,
                  "reminderTime": 60
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - See Errors"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Event"
        ],
        "summary": "Update an event",
        "description": "**Requires permission:** *StaffMember*\n\nUpdates an event and its owners. Only an owner of the event may update it.",
        "operationId": "PanopticApiEndpointsEventsDetailsPatchEventDetailsEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEventDetails_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Event Updated"
          },
          "400": {
            "description": "An Error Occurred - See Errors"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Event"
        ],
        "summary": "Create a new event",
        "description": "**Requires permission:** *StaffMember*\n\nCreates an event with the caller as organiser and first owner. Returns the new event id.",
        "operationId": "PanopticApiEndpointsEventsDetailsPostEventDetailsEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEventDetails_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - The new event id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostEventDetails_Response"
                },
                "example": {
                  "id": 0
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - See Errors"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Me/Events": {
      "get": {
        "tags": [
          "Me"
        ],
        "summary": "Get My Events",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nReturns the signup events the user owns (Access=Owner) or attends (default), ordered by start.",
        "operationId": "PanopticApiEndpointsEventsDetailsGetMyEventsEndpoint",
        "parameters": [
          {
            "name": "access",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Returned events",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMyEvents_Response"
                },
                "example": {
                  "events": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get events"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Event/Attendees": {
      "post": {
        "tags": [
          "Event"
        ],
        "summary": "Invite attendees to an event",
        "description": "**Requires permission:** *StaffMember*\n\nAdds the given attendees (as Invited) to an event and emails/notifies them an invitation. Only an owner of the event may invite.",
        "operationId": "PanopticApiEndpointsEventsAttendeesPostInviteAttendeesEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostInviteAttendees_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Attendees Invited"
          },
          "400": {
            "description": "An Error Occurred - See Errors"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Event/Attendees/Remind": {
      "post": {
        "tags": [
          "Event"
        ],
        "summary": "Remind / message event attendees",
        "description": "**Requires permission:** *StaffMember*\n\nEmails/notifies the attendees of an event whose type is in AttendeeTypes, as a reminder or thank-you message. Only an owner of the event may send.",
        "operationId": "PanopticApiEndpointsEventsAttendeesPostRemindAttendeesEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostRemindAttendees_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Attendees Emailed"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Event/Signup": {
      "post": {
        "tags": [
          "Event"
        ],
        "summary": "Save an event signup submission",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nSaves an attendee's response (attendance, sessions, answers, uploaded files) to an event, applying waitlist rules, optional PD record creation and calendar sync.",
        "operationId": "PanopticApiEndpointsEventsAttendeesPostSaveSubmissionEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSaveSubmission_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Signup Saved"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Theme": {
      "delete": {
        "tags": [
          "Theme"
        ],
        "summary": "Delete Dynamic Theme",
        "description": "**Requires permission:** *IT*\n\nDelete a dynamic theme.",
        "operationId": "PanopticApiEndpointsDynamicThemesDeleteThemeEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Theme Deleted"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not delete theme"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Theme"
        ],
        "summary": "Get Themes",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet Themes can be filters, sorted etc",
        "operationId": "PanopticApiEndpointsDynamicThemesGetThemesEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Got Themes",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetThemes_Response"
                },
                "example": {
                  "themes": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get themes"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Theme"
        ],
        "summary": "Update a Theme",
        "description": "**Requires permission:** *IT*\n\nUpdate a Theme",
        "operationId": "PanopticApiEndpointsDynamicThemesPatchThemeEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchTheme_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Updated Theme"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not update theme"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Theme"
        ],
        "summary": "Insert Theme",
        "description": "**Requires permission:** *IT*\n\nInsert a new theme",
        "operationId": "PanopticApiEndpointsDynamicThemesPostThemeEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostTheme_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Inserted Theme"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not insert theme"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Theme/Active": {
      "get": {
        "tags": [
          "Theme"
        ],
        "summary": "Get Active Theme",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet the active theme if there is one - app will default to their selected theme if not",
        "operationId": "PanopticApiEndpointsDynamicThemesGetActiveThemeEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Got Active Theme",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetActiveTheme_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get active theme"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Address/Lookup": {
      "get": {
        "tags": [
          "Address"
        ],
        "summary": "Look Up Addresses By Postcode",
        "description": "**Requires permissions:** *Guardian* or *Parent*\n\nReturns the deliverable addresses at a UK postcode (Royal Mail PAF, via Ideal Postcodes), already mapped onto the fields the details form uses. Advisory: the caller can always type an address instead. Returns Unavailable rather than an error when the service is not configured or is unreachable, so an outage never stops someone submitting their own address.",
        "operationId": "PanopticApiEndpointsDetailsCheckerGetAddressLookupEndpoint",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success — Found, NotFound or Unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LookupAddress_Response"
                },
                "example": {
                  "outcome": 2,
                  "addresses": []
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Address/Countries": {
      "get": {
        "tags": [
          "Address"
        ],
        "description": "**Requires permissions:** *Guardian* or *Parent*",
        "operationId": "PanopticApiEndpointsDetailsCheckerGetCountriesEndpoint",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CountriesResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/parent/details": {
      "get": {
        "tags": [
          "Parent"
        ],
        "summary": "Get Parent Details",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGets the logged in parent's information, and any change requests of theirs the record does not yet show",
        "operationId": "PanopticApiEndpointsDetailsCheckerGetParentDetailsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Returns the Parent's Information",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetParentDetails_Response"
                },
                "example": {
                  "pending": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get parent information"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/parent/changes": {
      "post": {
        "tags": [
          "Parent"
        ],
        "summary": "Post Parent Changes",
        "description": "**Requires permission:** *Parent*\n\nA list of changes to a parent's contact details",
        "operationId": "PanopticApiEndpointsDetailsCheckerPostParentChangesEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostParentChanges_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Parent/Pupil/Passport": {
      "get": {
        "tags": [
          "Parent"
        ],
        "summary": "Get a Pupil's Passports",
        "description": "**Requires permissions:** *Guardian* or *Parent*\n\nThe passports iSAMS holds for one of the caller's children, plus the passport types and places of issue configured in iSAMS so the app offers the School's own values.",
        "operationId": "PanopticApiEndpointsDetailsCheckerGetPupilPassportEndpoint",
        "parameters": [
          {
            "name": "studentUpi",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Not a parent of this pupil"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPupilPassport_Response"
                },
                "example": {
                  "passports": [],
                  "types": [],
                  "placesOfIssue": []
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Parent"
        ],
        "summary": "Save a Pupil's Passport",
        "description": "**Requires permissions:** *Guardian* or *Parent*\n\nWrites a passport straight into iSAMS for one of the caller's children, creating or updating the record. This is the only part of the Details Checker that updates iSAMS directly. No image is accepted or stored: the photo a parent takes is used on-device to read the machine-readable zone and then discarded.",
        "operationId": "PanopticApiEndpointsDetailsCheckerPostPupilPassportEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostPupilPassport_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Not a parent of this pupil"
          },
          "200": {
            "description": "Success - Passport saved"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Parent/Verification/Send": {
      "post": {
        "tags": [
          "Parent"
        ],
        "summary": "Send a Confirmation Code",
        "description": "**Requires permissions:** *Guardian* or *NewJoiner* or *Parent* or *Student*\n\nEmails or texts a one-time code to the address or number the caller is changing to. Rate-limited per destination AND per caller (the caller cap is the binding one; the endpoint throttle keys on a client-supplied header and is defence in depth only). Always answers 200 — whether a code was sent is in the body, so the endpoint cannot be used to probe which addresses exist.",
        "operationId": "PanopticApiEndpointsDetailsCheckerPostSendVerificationEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendVerification_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success — see Sent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SendVerification_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Parent/Verification/Check": {
      "post": {
        "tags": [
          "Parent"
        ],
        "summary": "Check a Confirmation Code",
        "description": "**Requires permissions:** *Guardian* or *NewJoiner* or *Parent* or *Student*\n\nConfirms a one-time code. Codes are single-use, expire after 10 minutes and allow five attempts — the attempt counter is atomic, and is the real limit; the endpoint throttle keys on a client-supplied header and is defence in depth only.",
        "operationId": "PanopticApiEndpointsDetailsCheckerPostCheckVerificationEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CheckVerification_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success — see Verified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckVerification_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Me/Department": {
      "get": {
        "tags": [
          "Me"
        ],
        "summary": "Get Department & Members",
        "description": "**Requires permission:** *StaffMember*\n\nGet a list of department members for the logged in user",
        "operationId": "PanopticApiEndpointsDepartmentGetDepartmentMembersEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetDepartmentMembers_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/DataSyncLogs": {
      "get": {
        "tags": [
          "Datasynclogs"
        ],
        "summary": "Get Data Sync Logs",
        "description": "**Requires permission:** *StaffMember*\n\nGet Data Sync Logs with optional pagination, sorting and filtering",
        "operationId": "PanopticApiEndpointsDataSyncLogsGetDataSyncLogsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetDataSyncLogs_Response"
                },
                "example": {
                  "dataSyncLogs": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/CustomPages/{id}": {
      "delete": {
        "tags": [
          "Custompages"
        ],
        "summary": "Delete a custom page",
        "description": "**Requires permission:** *StaffMember*\n\nDeletes the page and cascade-removes its access levels, blocks, trackers and completions.",
        "operationId": "PanopticApiEndpointsCustomPagesDeleteCustomPageEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Deleted"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "An Error Occurred - Not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Custompages"
        ],
        "summary": "Get a custom page",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nOne page with its access levels + ordered blocks (raw); records a view in the tracker.",
        "operationId": "PanopticApiEndpointsCustomPagesGetCustomPageEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCustomPage_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/CustomPages/User/{type}": {
      "get": {
        "tags": [
          "Custompages"
        ],
        "summary": "Get custom pages the user can access",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nPages the caller can access under the given lens (Viewer / Editor / Owner).",
        "operationId": "PanopticApiEndpointsCustomPagesGetCustomPagesEndpoint",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCustomPages_Response"
                },
                "example": {
                  "pages": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/CustomPages/{id}/Tracking": {
      "get": {
        "tags": [
          "Custompages"
        ],
        "summary": "Get the viewers of a page",
        "description": "**Requires permission:** *StaffMember*\n\nOne row per viewer (grouped by email) with their view count and latest view.",
        "operationId": "PanopticApiEndpointsCustomPagesGetPageViewersEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPageViewers_Response"
                },
                "example": {
                  "viewers": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/CustomPages/{id}/Complete": {
      "patch": {
        "tags": [
          "Custompages"
        ],
        "summary": "Mark a page as read/complete",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nRecords that the calling user has read/completed the page (group completion tracking).",
        "operationId": "PanopticApiEndpointsCustomPagesMarkPageCompleteEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Recorded"
          },
          "401": {
            "description": "Unauthorized"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/CustomPages": {
      "post": {
        "tags": [
          "Custompages"
        ],
        "summary": "Create or update a custom page",
        "description": "**Requires permission:** *StaffMember*\n\nUpserts the page metadata, replaces its access levels and its block set.",
        "operationId": "PanopticApiEndpointsCustomPagesUpsertCustomPageEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertCustomPage_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Saved"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/CustomPageGroups/{id}": {
      "delete": {
        "tags": [
          "Custompagegroups"
        ],
        "summary": "Delete a custom page group",
        "description": "**Requires permission:** *StaffMember*",
        "operationId": "PanopticApiEndpointsCustomPagesGroupsDeleteCustomPageGroupEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "admin",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Deleted"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "An Error Occurred - Not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Custompagegroups"
        ],
        "summary": "Get a custom page group + its pages",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nThe group plus the accessible published pages in it (by Type == PageType), each with the caller's completion records.",
        "operationId": "PanopticApiEndpointsCustomPagesGroupsGetCustomPageGroupEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "admin",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCustomPageGroup_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/CustomPageGroups": {
      "get": {
        "tags": [
          "Custompagegroups"
        ],
        "summary": "Get custom page groups the user can access",
        "description": "**Requires permission:** *StaffMember*",
        "operationId": "PanopticApiEndpointsCustomPagesGroupsGetCustomPageGroupsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCustomPageGroups_Response"
                },
                "example": {
                  "groups": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Custompagegroups"
        ],
        "summary": "Create or update a custom page group",
        "description": "**Requires permission:** *StaffMember*",
        "operationId": "PanopticApiEndpointsCustomPagesGroupsUpsertCustomPageGroupEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertCustomPageGroup_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Saved"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/CriticalIncident/Messages": {
      "get": {
        "tags": [
          "Criticalincident"
        ],
        "summary": "Get Critical Incident Messages",
        "description": "**Requires permission:** *CriticalIncidentAdmins*\n\nReturns the log of critical incident messages that have been sent.",
        "operationId": "PanopticApiEndpointsCriticalIncidentsGetIncidentMessagesEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Returned messages",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetIncidentMessages_Response"
                },
                "example": {
                  "messages": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get messages"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/CriticalIncident/Templates": {
      "get": {
        "tags": [
          "Criticalincident"
        ],
        "summary": "Get Critical Incident Templates",
        "description": "**Requires permission:** *CriticalIncidentAdmins*\n\nReturns the message templates for the critical incident page.",
        "operationId": "PanopticApiEndpointsCriticalIncidentsGetTemplatesEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Returned templates",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTemplates_Response"
                },
                "example": {
                  "templatesList": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get templates"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "put": {
        "tags": [
          "Criticalincident"
        ],
        "summary": "Add or Edit a Critical Incident Template",
        "description": "**Requires permission:** *CriticalIncidentAdmins*\n\nCreates the template when Id is 0, otherwise updates it.",
        "operationId": "PanopticApiEndpointsCriticalIncidentsPutAddEditTemplateEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddEditTemplate_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Template saved"
          },
          "400": {
            "description": "An Error Occurred - Could not save template"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/CriticalIncident/Message": {
      "post": {
        "tags": [
          "Criticalincident"
        ],
        "summary": "Send a Critical Message",
        "description": "**Requires permission:** *CriticalIncidentAdmins*\n\nSends a critical incident message to all staff and/or all students (push + email) and records it in the message log.",
        "operationId": "PanopticApiEndpointsCriticalIncidentsPostSendMessageEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendCriticalMessage_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Message sent"
          },
          "400": {
            "description": "An Error Occurred - Could not send message"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/CriticalIncident/Test": {
      "post": {
        "tags": [
          "Criticalincident"
        ],
        "summary": "Send a Test Critical Message",
        "description": "**Requires permission:** *CriticalIncidentAdmins*\n\nSends the drafted critical message to the logged-in user only.",
        "operationId": "PanopticApiEndpointsCriticalIncidentsPostSendTestMessageEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendTestMessage_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Test message sent"
          },
          "400": {
            "description": "An Error Occurred - Could not send test message"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/me/academic": {
      "get": {
        "tags": [
          "Me"
        ],
        "summary": "Get Academic Information about the logged in user",
        "description": "**Requires permission:** *StaffMember*\n\nIncluding Form, House, and Classes",
        "operationId": "PanopticApiEndpointsCoreGetMeAcademicEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMeAcademic_Response"
                },
                "example": {
                  "classes": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Me": {
      "get": {
        "tags": [
          "Me"
        ],
        "summary": "Get Me",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet the User's Information",
        "operationId": "PanopticApiEndpointsCoreGetMeEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Returns the User's Information",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMe_Response"
                },
                "example": {
                  "roles": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get user information"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/User": {
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Get User",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGets a user's information, via their UPI",
        "operationId": "PanopticApiEndpointsCoreGetUserEndpoint",
        "parameters": [
          {
            "name": "upi",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "searchScope",
            "in": "query",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UserSearchScope"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Returns the User's Information",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUser_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get user information"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Contacts": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Get Contacts",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nGet Contacts with optional pagination, sorting, filtering and includes<br />Supported Includes: `Relations`, `Relations.Contacts` (This can be done infinitely, e.g. `Relations.Contacts.To.Relations.Contacts` or `Relations.Contacts.From.Relations.Contacts`), `InverseRelations`, `InverseRelations.Contacts` (This can be done infinitely, e.g. `InverseRelations.Contacts.To.InverseRelations.Contacts` or `InverseRelations.Contacts.From.InverseRelations.Contacts`), `UserFields`.",
        "operationId": "PanopticApiEndpointsContactsGetContactsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetContacts_Response"
                },
                "example": {
                  "contacts": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Contacts/Students": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Get Students of Parent",
        "description": "**Requires permissions:** *Guardian* or *Parent*\n\nGet a list of students for the logged in parent",
        "operationId": "PanopticApiEndpointsContactsGetStudentsOfParentEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStudentsOfParent_Response"
                },
                "example": {
                  "students": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/cl/choice": {
      "get": {
        "tags": [
          "Cl"
        ],
        "summary": "Get contact-list opt-in choice",
        "description": "**Requires permissions:** *Guardian* or *Parent*\n\nThe calling parent/guardian's contact-list opt-in state, plus whether they can currently opt out (the opt-out window follows term boundaries).",
        "operationId": "PanopticApiEndpointsContactListsGetChoiceEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller has no resolvable contact record"
          },
          "200": {
            "description": "Success - choice returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Choice_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "put": {
        "tags": [
          "Cl"
        ],
        "summary": "Set contact-list opt-in choice",
        "description": "**Requires permissions:** *Guardian* or *Parent*\n\nOpts the calling parent/guardian into or out of the contact list. Opting in stamps the opt-in date; opting out preserves the original date (legacy parity).",
        "operationId": "PanopticApiEndpointsContactListsPutChoiceEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateChoice_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller has no resolvable contact record"
          },
          "200": {
            "description": "Success - choice updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateChoice_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/cl/seniorhousemembership": {
      "post": {
        "tags": [
          "Cl"
        ],
        "summary": "Check senior-house membership",
        "description": "**Requires permissions:** *Guardian* or *Parent*\n\nReturns whether the given pupil belongs to a senior (boarding) house. Restricted to the pupil's own parent/guardian.",
        "operationId": "PanopticApiEndpointsContactListsPostSeniorHouseMembershipEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SeniorHouseMembership_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller is not a parent of this pupil"
          },
          "200": {
            "description": "Success - membership returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeniorHouseMembership_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/cl/year": {
      "post": {
        "tags": [
          "Cl"
        ],
        "summary": "Get year-group contact list",
        "description": "**Requires permissions:** *Guardian* or *Parent*\n\nContact details of opted-in parents for pupils in the same year block as the given pupil. Restricted to the pupil's own parent/guardian, and only returned if the caller has themselves opted in (reciprocity).",
        "operationId": "PanopticApiEndpointsContactListsPostYearContactListEndpoint",
        "requestBody": {
          "x-name": "ContactListRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactListRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller is not a parent of this pupil"
          },
          "200": {
            "description": "Success - contact list returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/YearContactList_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/cl/house": {
      "post": {
        "tags": [
          "Cl"
        ],
        "summary": "Get academic-house contact list",
        "description": "**Requires permissions:** *Guardian* or *Parent*\n\nContact details of opted-in parents for pupils in the given pupil's academic house. Restricted to the pupil's own parent/guardian, and only returned if the caller has themselves opted in (reciprocity).",
        "operationId": "PanopticApiEndpointsContactListsPostHouseContactListEndpoint",
        "requestBody": {
          "x-name": "ContactListRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactListRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller is not a parent of this pupil"
          },
          "200": {
            "description": "Success - contact list returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HouseContactList_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/cl/seniorhouse": {
      "post": {
        "tags": [
          "Cl"
        ],
        "summary": "Get senior (boarding) house contact list",
        "description": "**Requires permissions:** *Guardian* or *Parent*\n\nContact details of opted-in parents for pupils in the given pupil's boarding house. Restricted to the pupil's own parent/guardian, and only returned if the caller has themselves opted in (reciprocity).",
        "operationId": "PanopticApiEndpointsContactListsPostSeniorHouseContactListEndpoint",
        "requestBody": {
          "x-name": "ContactListRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactListRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Caller is not a parent of this pupil"
          },
          "200": {
            "description": "Success - contact list returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HouseContactList_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Communications/Campaigns/{id}/Analytics": {
      "get": {
        "tags": [
          "Communications"
        ],
        "summary": "How a sent campaign performed",
        "description": "**Requires permission:** *CommunicationAdmin*\n\nThe delivery funnel, which links were followed and by how many people, where from, on what, and how quickly. Aggregates only — no recipient is named.",
        "operationId": "PanopticApiEndpointsCommunicationsGetCampaignAnalyticsEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCampaignAnalytics_Response"
                }
              }
            }
          },
          "404": {
            "description": "Not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Communications/Campaigns/{id}/Recipients": {
      "get": {
        "tags": [
          "Communications"
        ],
        "summary": "A sent campaign's recipients and how each one fared",
        "description": "**Requires permission:** *CommunicationAdmin*\n\nHeadline counts plus the recipients matching a segment — everybody, those who did not click, those it bounced for, and so on. What the follow-up flow builds its recipient list from.",
        "operationId": "PanopticApiEndpointsCommunicationsGetCampaignRecipientsEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "segment",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCampaignRecipients_Response"
                }
              }
            }
          },
          "404": {
            "description": "Not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Communications/Campaigns": {
      "get": {
        "tags": [
          "Communications"
        ],
        "summary": "List campaigns",
        "description": "**Requires permission:** *CommunicationAdmin*\n\nThe caller's sent and scheduled communications, plus their department's, plus every campaign in the system for IT. Newest first.",
        "operationId": "PanopticApiEndpointsCommunicationsGetCampaignsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCampaigns_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Communications/ReplyAddresses": {
      "get": {
        "tags": [
          "Communications"
        ],
        "summary": "Reply-To addresses available to the caller",
        "description": "**Requires permission:** *CommunicationAdmin*\n\nThe options the composer's Reply-To picker offers: the default no-reply mailbox, the caller's own address, and any address an admin has granted them. The send endpoint enforces the same list, so this is a convenience rather than the gate.",
        "operationId": "PanopticApiEndpointsCommunicationsGetReplyAddressesEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReplyAddresses_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Communications/Campaigns/{id}/Archive": {
      "post": {
        "tags": [
          "Communications"
        ],
        "summary": "Archive a campaign, or restore one",
        "description": "**Requires permission:** *CommunicationAdmin*\n\nTakes a finished send out of the working list without deleting anything, or puts it back. The owner or IT only — the department and All scopes can see a colleague's campaigns but must not be able to hide them.",
        "operationId": "PanopticApiEndpointsCommunicationsPostArchiveCampaignEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostArchiveCampaign_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Not yours to archive"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostArchiveCampaign_Response"
                }
              }
            }
          },
          "404": {
            "description": "Not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Communications/Webhooks/Resend": {
      "post": {
        "tags": [
          "Communications"
        ],
        "summary": "Resend delivery events",
        "description": "**Auth:** Anonymous - no token required.\n\nReceives Resend's webhook and stamps delivery, bounces, complaints and opens onto the campaign recipient the event belongs to. Anonymous, because Resend cannot hold a token — authenticated instead by the Standard Webhooks signature over the body.",
        "operationId": "PanopticApiEndpointsCommunicationsPostResendWebhookEndpoint",
        "responses": {
          "204": {
            "description": "No Content"
          },
          "200": {
            "description": "Accepted"
          },
          "401": {
            "description": "Signature missing or invalid"
          }
        }
      }
    },
    "/Communications/Campaign": {
      "post": {
        "tags": [
          "Communications"
        ],
        "summary": "Send or schedule a campaign",
        "description": "**Requires permission:** *CommunicationAdmin*\n\nSends a push and/or email to a resolved recipient list, immediately or scheduled for a future time (queued as a job). Each recipient carries merge fields; the subject/body/link support {{tokens}} substituted per recipient. Records the send on CORE_Campaigns.",
        "operationId": "PanopticApiEndpointsCommunicationsPostSendCampaignEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSendCampaign_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - sent or scheduled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostSendCampaign_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - no recipients or no channel selected"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Communications/ReplyAddresses/Grants": {
      "get": {
        "tags": [
          "Communications"
        ],
        "summary": "Every Reply-To grant on record",
        "description": "**Requires permissions:** *Admin* or *IT*\n\nLists which users may set which Reply-To address on a campaign, with the grantee's display name resolved for the admin list.",
        "operationId": "PanopticApiEndpointsCommunicationsAdminGetReplyAddressGrantsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReplyAddressGrants_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Communications"
        ],
        "summary": "Grant a user a Reply-To address",
        "description": "**Requires permissions:** *Admin* or *IT*\n\nLets one user set one Reply-To address on their campaigns. Display only: it does not grant access to the mailbox and does not change the From address.",
        "operationId": "PanopticApiEndpointsCommunicationsAdminPostReplyAddressGrantEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostReplyAddressGrant_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostReplyAddressGrant_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - missing or malformed address"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Communications/ReplyAddresses/Grants/{id}": {
      "delete": {
        "tags": [
          "Communications"
        ],
        "summary": "Withdraw a Reply-To grant",
        "description": "**Requires permissions:** *Admin* or *IT*\n\nRemoves the grant. Campaigns already sent are unaffected — the Reply-To they used is recorded on the campaign.",
        "operationId": "PanopticApiEndpointsCommunicationsAdminDeleteReplyAddressGrantEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteReplyAddressGrant_Response"
                }
              }
            }
          },
          "404": {
            "description": "Not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Classes": {
      "get": {
        "tags": [
          "Classes"
        ],
        "summary": "Get Classes",
        "description": "**Requires permission:** *StaffMember*\n\nGet Classes for Staff Member<br />Supported Includes: `Students` and all Student includes see [Get Students](#tag/students/GET/Students)",
        "operationId": "PanopticApiEndpointsClassesGetClassesEndpoint",
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got Classes",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetClasses_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get Classes"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Classes/Students": {
      "get": {
        "tags": [
          "Classes"
        ],
        "summary": "Get Class Students",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nGets the students in a class",
        "operationId": "PanopticApiEndpointsClassesGetClassStudentsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "classId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "attendanceStart",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          },
          {
            "name": "attendanceEnd",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetClassStudents_Response"
                },
                "example": {
                  "students": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Classes/Staff/Bulk": {
      "patch": {
        "tags": [
          "Classes"
        ],
        "summary": "Bulk Update Class Staff",
        "description": "**Requires permission:** *IT*\n\nUpdate the report writer and parents evening flags for many class staff members in a single request. Used by the Class Staff bulk Excel import.",
        "operationId": "PanopticApiEndpointsClassesStaffPatchClassStaffBulkEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchClassStaffBulk_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Updated Class Staff",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PatchClassStaffBulk_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not update Class Staff"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Classes/Staff": {
      "patch": {
        "tags": [
          "Classes"
        ],
        "summary": "Update Class Staff",
        "description": "**Requires permission:** *IT*\n\nUpdate a class staff member's report writer and parents evening flags",
        "operationId": "PanopticApiEndpointsClassesStaffPatchClassStaffEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchClassStaff_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Updated Class Staff"
          },
          "400": {
            "description": "An Error Occurred - Could not update Class Staff"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/books": {
      "get": {
        "tags": [
          "Books"
        ],
        "summary": "Get Books",
        "description": "**Requires permission:** *BookReading*\n\nGet Books <br />Supported Includes: `Students` and all Student includes see [Get Students](#tag/students/GET/Students)",
        "operationId": "PanopticApiEndpointsBookReadingGetBooksEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetBooks_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Books"
        ],
        "summary": "Patch Book",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nPatch Book",
        "operationId": "PanopticApiEndpointsBookReadingPatchBookEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBook_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Books"
        ],
        "summary": "Post Book",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nPost Book",
        "operationId": "PanopticApiEndpointsBookReadingPostBookEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBook_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/books/student": {
      "get": {
        "tags": [
          "Books"
        ],
        "summary": "Get Books for Student",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGet Books for Student",
        "operationId": "PanopticApiEndpointsBookReadingGetBooksForStudentEndpoint",
        "parameters": [
          {
            "name": "studentId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetBooksForStudent_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Books/Stats": {
      "get": {
        "tags": [
          "Books"
        ],
        "summary": "Get Book Stats",
        "description": "**Requires permissions:** *StaffMember* or *Student*\n\nGet Book Stats for a particular type; the type can be one of the following: Admin, Form, Student, Class, House, HoD. These should be paired with the filter parameter, e.g. if type is 'Student' and filter is '1234567890' then the books for the student with the UPI '1234567890' will be returned.",
        "operationId": "PanopticApiEndpointsBookReadingGetBookStatsEndpoint",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetBookStats_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/BillingExtras": {
      "get": {
        "tags": [
          "Billingextras"
        ],
        "summary": "Get Billing Extras for Boy",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nGrabs every unpaid billing extra based on the pupil's Name Id",
        "operationId": "PanopticApiEndpointsBillingExtrasGetBillingExtrasEndpoint",
        "parameters": [
          {
            "name": "pupilId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetBillingExtras_Response"
                },
                "example": {
                  "billingExtras": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Auth/MySessions": {
      "get": {
        "tags": [
          "Auth"
        ],
        "summary": "Get my sign-in sessions",
        "description": "**Auth:** Authenticated - any signed-in user.\n\nReturns the signed-in user's own recent login sessions (auth method, device, IP, location), newest first. Masquerade rows are excluded.",
        "operationId": "PanopticApiEndpointsAuthenticationGetMySessionsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSessions_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Auth/Masquerade": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Masquerade user",
        "description": "**Requires permission:** *StaffMember*\n\nMasquerade as another user, requires Admin permissions",
        "operationId": "PanopticApiEndpointsAuthenticationPostMasqueradeEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMasquerade_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Masqueraded JWT returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostMasquerade_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not masquerade as user"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Auth/Blocks/{id}": {
      "delete": {
        "tags": [
          "Auth"
        ],
        "summary": "Unblock a user",
        "description": "**Requires permission:** *IT*\n\nRemoves an account block by id (the user can sign in again). IT only.",
        "operationId": "PanopticApiEndpointsAuthenticationUserBlocksDeleteUserBlockEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - removed (or already absent)"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Auth/Blocks/{id}/Activity": {
      "get": {
        "tags": [
          "Auth"
        ],
        "summary": "Sign-in activity for a blocked account",
        "description": "**Requires permission:** *IT*\n\nReturns the account's successful AND failed sign-in activity, merged and newest first, so IT can judge whether a block was justified before removing it. IT only.",
        "operationId": "PanopticApiEndpointsAuthenticationUserBlocksGetUserBlockActivityEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUserBlockActivity_Response"
                }
              }
            }
          },
          "404": {
            "description": "Block not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Auth/Blocks": {
      "get": {
        "tags": [
          "Auth"
        ],
        "summary": "List blocked users",
        "description": "**Requires permission:** *IT*\n\nReturns the current (active) account blocks, newest first. IT only.",
        "operationId": "PanopticApiEndpointsAuthenticationUserBlocksGetUserBlocksEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUserBlocks_Response"
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Block a user",
        "description": "**Requires permission:** *IT*\n\nManually blocks an account by email. IT only. No-op if already blocked.",
        "operationId": "PanopticApiEndpointsAuthenticationUserBlocksPostUserBlockEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostUserBlock_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - blocked (or already blocked)"
          },
          "400": {
            "description": "An Error Occurred - email required"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Auth/PanopticAuth/Config": {
      "get": {
        "tags": [
          "Auth"
        ],
        "summary": "PanopticAuth OIDC client config",
        "description": "**Auth:** Anonymous - no token required.\n\nReturns the (non-secret) PanopticAuth OIDC client configuration — authority, client id and redirect URIs — sourced from Key Vault. The client is created in the PanopticAuth admin interface and its id/redirects are stored in Key Vault, so nothing is hardcoded in the app.",
        "operationId": "PanopticApiEndpointsAuthenticationTokensGetPanopticAuthConfigEndpoint",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PanopticAuthConfigResponse"
                }
              }
            }
          }
        }
      }
    },
    "/Auth/Apple": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Apple Code to Token",
        "description": "**Auth:** Anonymous - no token required.\n\nConverts an Apple Code to a Token for Authentication",
        "operationId": "PanopticApiEndpointsAuthenticationTokensPostConvertAppleCodeToTokenEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostConvertAppleCodeToToken_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostConvertAppleCodeToToken_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        }
      }
    },
    "/Auth/Code": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Microsoft Auth Code to Token ",
        "description": "**Auth:** Anonymous - no token required.\n\nConverts a Microsoft Auth Code to a Token for Authentication",
        "operationId": "PanopticApiEndpointsAuthenticationTokensPostConvertCodeToTokenEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostConvertCodeToToken_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success Message - A Token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostConvertCodeToToken_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not convert token"
          }
        }
      }
    },
    "/Auth/Email": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Email to Token",
        "description": "**Auth:** Anonymous - no token required.\n\nConvert an Email and OTP to a Token for Authentication ",
        "operationId": "PanopticApiEndpointsAuthenticationTokensPostConvertEmailToTokenEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostConvertEmailToToken_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success Message - a Token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostConvertEmailToToken_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not generate token"
          }
        }
      }
    },
    "/Auth/FFSecret": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Convert FFSecret To Token",
        "description": "**Auth:** Anonymous - no token required.\n\nConverts a Firefly Secret to a Token for Authentication",
        "operationId": "PanopticApiEndpointsAuthenticationTokensPostConvertFFSecretToTokenEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostConvertFFSecretToToken_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success Message - Successfully created token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostConvertFFSecretToToken_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not generate token"
          }
        }
      }
    },
    "/Auth/Google": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Google Id to Token",
        "description": "**Auth:** Anonymous - no token required.\n\nConverts a Google Id to a Token for Authentication",
        "operationId": "PanopticApiEndpointsAuthenticationTokensPostConvertGoogleIdToTokenEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostConvertGoogleIdToToken_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostConvertGoogleIdToToken_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        }
      }
    },
    "/Auth/Mobile": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Mobile to Token",
        "description": "**Auth:** Anonymous - no token required.\n\nConvert Mobile number and OTP to Token",
        "operationId": "PanopticApiEndpointsAuthenticationTokensPostConvertMobileToTokenEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostConvertMobileToToken_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success Message - A JWT",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostConvertMobileToToken_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not generate OTP"
          }
        }
      }
    },
    "/Auth/PanopticAuth": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "PanopticAuth OIDC token to Token",
        "description": "**Auth:** Anonymous - no token required.\n\nValidates a PanopticAuth OIDC access token (via the IdP introspection endpoint) and converts it to a Panoptic login token. Start of support for the PanopticAuth SSO provider, which will become the default sign-in.",
        "operationId": "PanopticApiEndpointsAuthenticationTokensPostConvertPanopticAuthToTokenEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostConvertPanopticAuthToToken_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostConvertPanopticAuthToToken_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred"
          }
        }
      }
    },
    "/external/v1/token": {
      "post": {
        "tags": [
          "External"
        ],
        "summary": "External API token (client credentials)",
        "description": "**Auth:** Anonymous - no token required.\n\nOAuth2 **client-credentials** grant for external API clients (OneRoster auth format).\r\n\r\n### Request\r\n\r\nThe body must be **form-encoded**:\r\n\r\n- `Content-Type: application/x-www-form-urlencoded` _(multipart/form-data is also accepted)_\r\n- `grant_type=client_credentials` — **required**; any other value returns `400 unsupported_grant_type`\r\n\r\nSupply credentials **one** of two ways:\r\n\r\n| Method | How |\r\n| --- | --- |\r\n| HTTP Basic auth | `Authorization: Basic base64(client_id:client_secret)` |\r\n| Form fields | `client_id` and `client_secret` in the body |\r\n\r\n> ⚠️ Credentials must **not** be placed in the query string — secrets in URLs leak through\r\n> proxy/server logs, browser history and referrers. A `client_id`/`client_secret` query\r\n> parameter is rejected with `400 invalid_request`.\r\n\r\n#### Example\r\n\r\n```bash\r\ncurl -X POST \"{baseUrl}/external/v1/token\" \\\r\n  -u \"$CLIENT_ID:$CLIENT_SECRET\" \\\r\n  -H \"Content-Type: application/x-www-form-urlencoded\" \\\r\n  -d \"grant_type=client_credentials\"\r\n```\r\n\r\n### Response\r\n\r\nOn success returns a short-lived bearer token carrying the client's configured permissions\r\nand allowed endpoints. **There is no refresh token** — re-request when it expires.\r\n\r\n```json\r\n{\r\n  \"access_token\": \"<jwt>\",\r\n  \"token_type\": \"Bearer\",\r\n  \"expires_in\": 3600\r\n}\r\n```\r\n\r\nCall the API with `Authorization: Bearer <access_token>`.\r\n\r\n### Errors\r\n\r\n| Status | Meaning |\r\n| --- | --- |\r\n| `400 invalid_request` | Malformed request, or credentials in the query string |\r\n| `400 unsupported_grant_type` | `grant_type` is not `client_credentials` |\r\n| `401 invalid_client` | Unknown or missing credentials |\r\n| `403 access_denied` | The client is disabled |",
        "operationId": "PanopticApiEndpointsAuthenticationTokensPostExternalTokenEndpoint",
        "responses": {
          "200": {
            "description": "Success - access token issued",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostExternalToken_Response"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request / unsupported_grant_type"
          },
          "401": {
            "description": "invalid_client"
          },
          "403": {
            "description": "client disabled"
          }
        }
      }
    },
    "/Auth/ServiceAccount": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "JWT for Service Account",
        "description": "**Auth:** Anonymous - no token required.\n\nConvert a client id and secret to a JWT",
        "operationId": "PanopticApiEndpointsAuthenticationTokensPostJwtForServiceAccountEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostJwtForServiceAccount_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success - JWT Generated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostJwtForServiceAccount_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not generate JWT"
          }
        }
      }
    },
    "/Auth/Authorize": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "JWT for Token",
        "description": "**Auth:** Anonymous - no token required.\n\nConverts a Token to a JWT for Authentication",
        "operationId": "PanopticApiEndpointsAuthenticationTokensPostJwtForTokenEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostJwtForToken_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success - Successfully Generated JWT",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostJwtForToken_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not generate JWT"
          }
        }
      }
    },
    "/Auth/RefreshToken": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Refresh Token",
        "description": "**Auth:** Anonymous - no token required.\n\nExchange a token for a new one",
        "operationId": "PanopticApiEndpointsAuthenticationTokensPostRefreshTokenEndpoint",
        "responses": {
          "200": {
            "description": "Success - A new Token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostRefreshToken_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not generate token"
          }
        }
      }
    },
    "/ServiceAccounts": {
      "delete": {
        "tags": [
          "Serviceaccounts"
        ],
        "summary": "Delete Service Account",
        "description": "**Requires permission:** *IT*\n\nDelete a service account, make sure to remove all references to this service account before deleting",
        "operationId": "PanopticApiEndpointsAuthenticationServiceAccountsDeleteServiceAccountEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Deleted Service Account"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not delete Service Account"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Serviceaccounts"
        ],
        "summary": "Get Service Accounts",
        "description": "**Requires permission:** *IT*\n\nGet a List of Service Accounts - Please note, this will not include the secret",
        "operationId": "PanopticApiEndpointsAuthenticationServiceAccountsGetServiceAccountsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got Service Accounts",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetServiceAccounts_Response"
                },
                "example": {
                  "serviceAccounts": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get Service Accounts"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Serviceaccounts"
        ],
        "summary": "Update Service Account",
        "description": "**Requires permission:** *IT*\n\nUpdate a service account - this will not update the client secret",
        "operationId": "PanopticApiEndpointsAuthenticationServiceAccountsPatchServiceAccountEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchServiceAccount_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Updated Service Account"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not update Service Account"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Serviceaccounts"
        ],
        "summary": "Create a new Service Account",
        "description": "**Requires permission:** *IT*\n\nThese Service Accounts are used to authenticate with the APIs and Access Single Pages within the App",
        "operationId": "PanopticApiEndpointsAuthenticationServiceAccountsPostServiceAccountEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostServiceAccount_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Service Account Created and ClientId & Secret Returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostServiceAccount_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not create Service Account"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ServiceAccounts/{id}/Activity": {
      "get": {
        "tags": [
          "Serviceaccounts"
        ],
        "summary": "Get Service Account Activity",
        "description": "**Requires permission:** *IT*\n\nThe per-request activity trail for a service account (most recent first by default).",
        "operationId": "PanopticApiEndpointsAuthenticationServiceAccountsGetServiceAccountActivityEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got Activity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetServiceAccountActivity_Response"
                },
                "example": {
                  "activity": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get Activity"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/ServiceAccounts/Regenerate": {
      "post": {
        "tags": [
          "Serviceaccounts"
        ],
        "summary": "Regenerate Secret",
        "description": "**Requires permission:** *IT*\n\nRegenerate a Client Secret For A ServiceAccount",
        "operationId": "PanopticApiEndpointsAuthenticationServiceAccountsPostRegenerateSecretEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostRegenerateSecret_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Secret Regenerated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostRegenerateSecret_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not Regenerate Secret"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/MasqueradeOverrides": {
      "delete": {
        "tags": [
          "Masqueradeoverrides"
        ],
        "summary": "Delete Override",
        "description": "**Requires permission:** *IT*\n\nDelete Override, alternative change the EndDate via `Patch`",
        "operationId": "PanopticApiEndpointsAuthenticationMasqueradeOverridesDeleteOverrideEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Deleted Override"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not delete Override"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Masqueradeoverrides"
        ],
        "summary": "Get Overrides",
        "description": "**Requires permission:** *IT*\n\nGet all overrides supporting pagination, filtering, and sorting",
        "operationId": "PanopticApiEndpointsAuthenticationMasqueradeOverridesGetOverridesEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got Masquerade Overrides",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetOverrides_Response"
                },
                "example": {
                  "masqueradeOverrides": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get Masquerade Overrides"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Masqueradeoverrides"
        ],
        "summary": "Update a Masquerade Override",
        "description": "**Requires permission:** *IT*\n\nUpdate a Masquerade Override, this will allow a user to masquerade as another user",
        "operationId": "PanopticApiEndpointsAuthenticationMasqueradeOverridesPatchOverrideEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchOverride_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Updated Masquerade Override"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not update Masquerade Override"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Masqueradeoverrides"
        ],
        "summary": "Create a new masquerade override",
        "description": "**Requires permission:** *IT*\n\nCreate a new masquerade override, this will allow a user to masquerade as another user",
        "operationId": "PanopticApiEndpointsAuthenticationMasqueradeOverridesPostOverrideEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostOverride_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Created Masquerade Override"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not create Masquerade Override"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Auth/MagicLink": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Generate Magic Link",
        "description": "**Auth:** Anonymous - no token required.\n\nGenerates a Magic Link for the user to login, and optionally returns the link",
        "operationId": "PanopticApiEndpointsAuthenticationMagicLinksPostGenerateMagicLinkEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostGenerateMagicLink_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success Message - Either Null or the link",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostGenerateMagicLink_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not generate Link"
          }
        }
      }
    },
    "/ExternalApis": {
      "delete": {
        "tags": [
          "Externalapis"
        ],
        "summary": "Delete External API",
        "description": "**Requires permission:** *IT*\n\nRemove a grantable external API endpoint from the catalogue.",
        "operationId": "PanopticApiEndpointsAuthenticationExternalApisDeleteExternalApiEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - External API deleted"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not delete External API"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Externalapis"
        ],
        "summary": "Get External APIs",
        "description": "**Requires permission:** *IT*\n\nThe catalogue of external API endpoints (path prefixes) that can be granted to a service account.",
        "operationId": "PanopticApiEndpointsAuthenticationExternalApisGetExternalApisEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Got External APIs",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetExternalApis_Response"
                },
                "example": {
                  "externalApis": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not get External APIs"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Externalapis"
        ],
        "summary": "Update External API",
        "description": "**Requires permission:** *IT*\n\nUpdate a catalogue external API endpoint (path, display name, description, active).",
        "operationId": "PanopticApiEndpointsAuthenticationExternalApisPatchExternalApiEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchExternalApi_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - External API updated"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not update External API"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Externalapis"
        ],
        "summary": "Create External API",
        "description": "**Requires permission:** *IT*\n\nAdd a grantable external API endpoint (path prefix) to the catalogue.",
        "operationId": "PanopticApiEndpointsAuthenticationExternalApisPostExternalApiEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostExternalApi_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - External API created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostExternalApi_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not create External API"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Auth/Logs": {
      "get": {
        "tags": [
          "Auth"
        ],
        "summary": "Get Auth Logs",
        "description": "**Requires permission:** *IT*\n\nGet Auth Logs supports pagination, sorting, and filtering.",
        "operationId": "PanopticApiEndpointsAuthenticationAuthLogsGetAuthLogsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAuthLogs_Response"
                },
                "example": {
                  "logs": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/attendance/student": {
      "get": {
        "tags": [
          "Attendance"
        ],
        "summary": "Get Attendance for a Student",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nGet Attendance for a Student, this will return the attendance for a student for a given date",
        "operationId": "PanopticApiEndpointsAttendanceStudentOverviewGetAttendanceForStudentEndpoint",
        "parameters": [
          {
            "name": "studentUpi",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          {
            "name": "date",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAttendanceForStudent_Response"
                },
                "example": {
                  "attendanceEntries": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/attendance/stats/student/{studentUpi}": {
      "get": {
        "tags": [
          "Attendance"
        ],
        "summary": "Get Attendance Summary for a Student",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *Guardian* or *Parent* or *StudentFacing*\n\nGet Attendance Summary for a Student, this will return the attendance summary for a student for a given date",
        "operationId": "PanopticApiEndpointsAttendanceStatsGetAttendanceStudentSummaryEndpoint",
        "parameters": [
          {
            "name": "studentUpi",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "date",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          },
          {
            "name": "timeframe",
            "in": "query",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/AcademicTimeframe"
            }
          },
          {
            "name": "customStartDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          },
          {
            "name": "customEndDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAttendanceStudentSummary_Response"
                },
                "example": {
                  "summary": {
                    "timeframe": 0,
                    "presentAm": 0,
                    "absentAm": 0,
                    "lateAm": 0,
                    "presentPm": 0,
                    "absentPm": 0,
                    "latePm": 0,
                    "totalAm": 0,
                    "totalPm": 0,
                    "totalLate": 0,
                    "totalPresent": 0,
                    "totalAbsent": 0,
                    "total": 0,
                    "totalDaysWithAttendanceRecords": 0,
                    "distributions": {},
                    "dailyAttendances": {},
                    "attendanceCodes": []
                  }
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Attendance/Codes/{codeId}": {
      "delete": {
        "tags": [
          "Attendance"
        ],
        "summary": "Archive an attendance code",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*",
        "operationId": "PanopticApiEndpointsAttendanceCodeDeleteAttendanceCodeEndpoint",
        "parameters": [
          {
            "name": "codeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - archived attendance code"
          },
          "400": {
            "description": "An Error Occurred - Could not archive attendance code"
          },
          "404": {
            "description": "An Error Occurred - Could not find attendance code"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Attendance/Admin": {
      "get": {
        "tags": [
          "Attendance"
        ],
        "summary": "Get All Attendance",
        "description": "**Requires permissions:** *AttendanceAdmin* or *IT*\n\nGet all attendance entries for a given date",
        "operationId": "PanopticApiEndpointsAttendanceAdminGetAllAttendanceEndpoint",
        "parameters": [
          {
            "name": "date",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Attendance entries found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAllAttendance_Response"
                },
                "example": {
                  "attendanceEntries": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Attendance/Absence": {
      "get": {
        "tags": [
          "Attendance"
        ],
        "summary": "Get Absence for a date",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nGet Absence for a date",
        "operationId": "PanopticApiEndpointsAttendanceAbsenceGetAbsenceForDateEndpoint",
        "parameters": [
          {
            "name": "date",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAbsenceForDate_Response"
                },
                "example": {
                  "absenceViews": [],
                  "notes": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Attendance/FutureAbsence": {
      "get": {
        "tags": [
          "Attendance"
        ],
        "summary": "Get Future Absences",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport* or *StudentFacing*\n\nGet Future Absences, this will return the future absences for a student",
        "operationId": "PanopticApiEndpointsAttendanceAbsenceGetFutureAbsencesEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFutureAbsences_Response"
                },
                "example": {
                  "futureAbsences": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Attendance"
        ],
        "summary": "Post Absences",
        "description": "**Requires permissions:** *AcademicStaff* or *AcademicSupport*\n\nGenerates a list of future attendance entries for a list of students",
        "operationId": "PanopticApiEndpointsAttendanceAbsencePostFutureAbsencesEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostFutureAbsences_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Absences saved",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostFutureAbsences_Response"
                },
                "example": {
                  "absences": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not save absences"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/AssessmentAfternoons/InterviewNotes": {
      "get": {
        "tags": [
          "Assessmentafternoons"
        ],
        "summary": "Get Interview Notes",
        "description": "**Requires permission:** *StaffMember*\n\nGet Interview Notes with optional pagination, sorting, filtering and includes",
        "operationId": "PanopticApiEndpointsAssessmentAfternoonsInterviewNotesGetInterviewNotesEndpoint",
        "parameters": [
          {
            "name": "exportAll",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetInterviewNotes_Response"
                },
                "example": {
                  "notes": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Assessmentafternoons"
        ],
        "summary": "Update an Interview Note",
        "description": "**Requires permission:** *StaffMember*\n\nUpdates an existing Interview Note in the database.",
        "operationId": "PanopticApiEndpointsAssessmentAfternoonsInterviewNotesPatchInterviewNotesEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchInterviewNotes_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Assessmentafternoons"
        ],
        "summary": "Post Interview Notes",
        "description": "**Requires permission:** *StaffMember*\n\nPost Interview Notes with optional pagination, sorting, filtering and includes",
        "operationId": "PanopticApiEndpointsAssessmentAfternoonsInterviewNotesPostInterviewNotesEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostInterviewNotes_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/AssessmentAfternoons/Dates": {
      "delete": {
        "tags": [
          "Assessmentafternoons"
        ],
        "summary": "Delete Assessment Afternoon Date",
        "description": "**Requires permissions:** *Admin* or *Admissions*\n\nDelete Assessment Afternoon Date with optional pagination, sorting, filtering and includes",
        "operationId": "PanopticApiEndpointsAssessmentAfternoonsDatesDeleteAssessmentAfternoonDateEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "get": {
        "tags": [
          "Assessmentafternoons"
        ],
        "summary": "Get Assessment Afternoon Dates",
        "description": "**Requires permission:** *StaffMember*\n\nGet Assessment Afternoon Dates with optional pagination, sorting, filtering and includes",
        "operationId": "PanopticApiEndpointsAssessmentAfternoonsDatesGetAssessmentAfternoonDatesEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAssessmentAfternoonDates_Response"
                },
                "example": {
                  "assessmentDates": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Assessmentafternoons"
        ],
        "summary": "Patch Assessment Afternoon Date",
        "description": "**Requires permissions:** *Admin* or *Admissions*\n\nPatch Assessment Afternoon Date with optional pagination, sorting, filtering and includes",
        "operationId": "PanopticApiEndpointsAssessmentAfternoonsDatesPatchAssessmentAfternoonDateEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchAssessmentAfternoonDate_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Assessmentafternoons"
        ],
        "summary": "Post Assessment Afternoon Date",
        "description": "**Requires permissions:** *Admin* or *Admissions*\n\nPost Assessment Afternoon Date with optional pagination, sorting, filtering and includes",
        "operationId": "PanopticApiEndpointsAssessmentAfternoonsDatesPostAssessmentAfternoonDateEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostAssessmentAfternoonDate_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/AssessmentAfternoons/Comments": {
      "get": {
        "tags": [
          "Assessmentafternoons"
        ],
        "summary": "Get Assessment Afternoon Comments",
        "description": "**Requires permissions:** *Admin* or *Admissions*\n\nGet Assessment Afternoon Comments with optional pagination, sorting, filtering and includes",
        "operationId": "PanopticApiEndpointsAssessmentAfternoonsCommentsGetAssessmentAfternoonCommentsEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAssessmentAfternoonComments_Response"
                },
                "example": {
                  "comments": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Assessmentafternoons"
        ],
        "summary": "Post Assessment Afternoon Comment",
        "description": "**Requires permission:** *StaffMember*\n\nPost Assessment Afternoon Comment with optional pagination, sorting, filtering and includes",
        "operationId": "PanopticApiEndpointsAssessmentAfternoonsCommentsPostAssessmentAfternoonCommentEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostAssessmentAfternoonComment_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/AssessmentAfternoons/Data": {
      "get": {
        "tags": [
          "Assessmentafternoons"
        ],
        "summary": "Get Assessment Afternoon Data",
        "description": "**Requires permission:** *StaffMember*\n\nGet Assessment Afternoon Data with optional pagination, sorting, filtering and includes",
        "operationId": "PanopticApiEndpointsAssessmentAfternoonsCommentsGetAssessmentAfternoonDataEndpoint",
        "parameters": [
          {
            "name": "tag",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAssessmentAfternoonData_Response"
                },
                "example": {
                  "commentsWithStudents": [],
                  "userType": 0
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Ai/SpellCheck": {
      "get": {
        "tags": [
          "Ai"
        ],
        "summary": "Ai Spellcheck",
        "description": "**Requires permission:** *StaffMember*\n\nGets an AI-generated spell check of a text",
        "operationId": "PanopticApiEndpointsAiSpellcheckGetAiSpellCheckEndpoint",
        "parameters": [
          {
            "name": "text",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "pupilId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Successfully Corrected Text using Ai",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAiSpellCheck_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not correct text"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Ai"
        ],
        "summary": "Ai Spellcheck (body)",
        "description": "**Requires permission:** *StaffMember*\n\nGets an AI-generated spell check of a text. Identical to GET /Ai/SpellCheck, but the text and pupil id travel in the request body so pupil narrative never appears in a URL (query strings are logged by gateways even under TLS). Prefer this form.",
        "operationId": "PanopticApiEndpointsAiSpellcheckPostAiSpellCheckEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostAiSpellCheck_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Successfully Corrected Text using Ai",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostAiSpellCheck_Response"
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not correct text"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Ai/ReportSummary/Report": {
      "get": {
        "tags": [
          "Ai"
        ],
        "summary": "Summarise single Report",
        "description": "**Requires permissions:** *IT* or *SeniorTeam*\n\nSummarise single Report for a student using Ai",
        "operationId": "PanopticApiEndpointsAiReportsSummaryGetReportSummaryReportEndpoint",
        "parameters": [
          {
            "name": "studentNameId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "reportId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "overrideDbSummary",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - The report summary",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportSummaryReport_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Could not summarise report"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Ai/ReportSummary/Term": {
      "get": {
        "tags": [
          "Ai"
        ],
        "summary": "Get Report Summary Term",
        "description": "**Requires permissions:** *IT* or *SeniorTeam*\n\nGets an AI-generated summary of all a student's reports for a term.",
        "operationId": "PanopticApiEndpointsAiReportsSummaryGetReportSummaryTermEndpoint",
        "parameters": [
          {
            "name": "studentNameId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "academicYear",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "termName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "overrideDbSummary",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportSummaryTerm_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Ai/ReportSummary/AcademicYear": {
      "get": {
        "tags": [
          "Ai"
        ],
        "summary": "Get Report Summary Year",
        "description": "**Requires permissions:** *IT* or *SeniorTeam*\n\nGets an AI-generated summary of all a student's reports for a year.",
        "operationId": "PanopticApiEndpointsAiReportsSummaryGetReportSummaryYearEndpoint",
        "parameters": [
          {
            "name": "studentNameId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "academicYear",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "overrideDbSummary",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportSummaryYear_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Ai/ReportSummary": {
      "patch": {
        "tags": [
          "Ai"
        ],
        "summary": "Patch Report Summary",
        "description": "**Requires permission:** *AllStaff*\n\nPatches an AI-generated report summary.",
        "operationId": "PanopticApiEndpointsAiReportsSummaryPatchReportSummaryEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchReportSummary_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PatchReportSummary_Response"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Ai/reports/entryCorrection": {
      "patch": {
        "tags": [
          "Ai"
        ],
        "summary": "Overwrite report with Ai",
        "description": "**Requires permission:** *StaffMember*\n\nOverwrites a report entry's text with AI-corrected text",
        "operationId": "PanopticApiEndpointsAiReportsCorrectionPatchReportEntryAiCheckEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchReportEntryAiCheck_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not overwrite report entry"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "put": {
        "tags": [
          "Ai"
        ],
        "summary": "Store the text when the user corrects via the AI button",
        "description": "**Requires permission:** *StaffMember*\n\nRecords the original + corrected report-entry text (RPT_EntriesBeforeAi).",
        "operationId": "PanopticApiEndpointsAiReportsCorrectionPutReportEntryAiCheckEndpoint",
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutReportEntryAiCheck_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - Could not store report entry text"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Admin/Sync/Run/{which}": {
      "post": {
        "tags": [
          "Admin"
        ],
        "summary": "Trigger a manual MIS sync",
        "description": "**Requires permission:** *Admin*\n\nAdmin-only. Kicks off one of the Tonbridge.Functions manual sync runs (isams | groups | mailchimp | onarken | openapply | openapply-full) and returns immediately — the sync runs server-side; watch the sync log for progress/result.",
        "operationId": "PanopticApiEndpointsAdminSyncPostRunSyncEndpoint",
        "parameters": [
          {
            "name": "which",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - sync triggered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunSync_Response"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request - unknown sync key"
          },
          "500": {
            "description": "Functions key not configured"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Admin/O365/Config/{school}": {
      "get": {
        "tags": [
          "Admin"
        ],
        "description": "**Requires permissions:** *Admin* or *IT*",
        "operationId": "PanopticApiEndpointsAdminO365SyncGetO365SyncConfigEndpoint",
        "parameters": [
          {
            "name": "school",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/O365SyncConfigDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "put": {
        "tags": [
          "Admin"
        ],
        "description": "**Requires permissions:** *Admin* or *IT*",
        "operationId": "PanopticApiEndpointsAdminO365SyncPutO365SyncConfigEndpoint",
        "parameters": [
          {
            "name": "school",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "x-name": "O365SyncConfigDto",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/O365SyncConfigDto"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/O365SyncConfigDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Admin/O365/Inventory": {
      "post": {
        "tags": [
          "Admin"
        ],
        "description": "**Requires permissions:** *Admin* or *IT*",
        "operationId": "PanopticApiEndpointsAdminO365SyncPostTenantInventoryEndpoint",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartRunResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Admin/O365/StaffSync": {
      "post": {
        "tags": [
          "Admin"
        ],
        "description": "**Requires permissions:** *Admin* or *IT*",
        "operationId": "PanopticApiEndpointsAdminO365SyncPostStaffSyncEndpoint",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartRunResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Admin/O365/PhotoSync": {
      "post": {
        "tags": [
          "Admin"
        ],
        "description": "**Requires permissions:** *Admin* or *IT*",
        "operationId": "PanopticApiEndpointsAdminO365SyncPostPhotoSyncEndpoint",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartRunResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Admin/O365/ApplicantEnrolment": {
      "post": {
        "tags": [
          "Admin"
        ],
        "description": "**Requires permissions:** *Admin* or *IT*",
        "operationId": "PanopticApiEndpointsAdminO365SyncPostApplicantEnrolmentEndpoint",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartRunResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Admin/O365/BulkUpdate": {
      "post": {
        "tags": [
          "Admin"
        ],
        "description": "**Requires permissions:** *Admin* or *IT*",
        "operationId": "PanopticApiEndpointsAdminO365SyncPostBulkUpdateEndpoint",
        "requestBody": {
          "x-name": "BulkUpdateRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkUpdateRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartRunResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Admin/O365/Fields": {
      "get": {
        "tags": [
          "Admin"
        ],
        "description": "**Requires permissions:** *Admin* or *IT*",
        "operationId": "PanopticApiEndpointsAdminO365SyncGetBulkFieldsEndpoint",
        "parameters": [
          {
            "name": "school",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "target",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkFieldsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Admin/O365/Lookup": {
      "get": {
        "tags": [
          "Admin"
        ],
        "description": "**Requires permissions:** *Admin* or *IT*",
        "operationId": "PanopticApiEndpointsAdminO365SyncGetLookupEndpoint",
        "parameters": [
          {
            "name": "school",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LookupResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Admin/O365/Runs/{id}": {
      "get": {
        "tags": [
          "Admin"
        ],
        "description": "**Requires permissions:** *Admin* or *IT*",
        "operationId": "PanopticApiEndpointsAdminO365SyncGetSyncRunEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "since",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SyncRunSnapshotResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Admin/O365/Runs/{id}/Report": {
      "get": {
        "tags": [
          "Admin"
        ],
        "description": "**Requires permissions:** *Admin* or *IT*",
        "operationId": "PanopticApiEndpointsAdminO365SyncGetSyncRunReportEndpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Admin/O365/PhotoDirectory": {
      "get": {
        "tags": [
          "Admin"
        ],
        "description": "**Requires permissions:** *Admin* or *IT*",
        "operationId": "PanopticApiEndpointsAdminO365SyncGetPhotoDirectoryEndpoint",
        "parameters": [
          {
            "name": "school",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "target",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "refresh",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhotoDirectoryResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Admin/O365/PhotoUpload": {
      "post": {
        "tags": [
          "Admin"
        ],
        "description": "**Requires permissions:** *Admin* or *IT*",
        "operationId": "PanopticApiEndpointsAdminO365SyncPostPhotoUploadEndpoint",
        "requestBody": {
          "x-name": "PhotoUploadRequest",
          "description": "",
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/PhotoUploadRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhotoUploadResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Admin/ApplicantAccess": {
      "get": {
        "tags": [
          "Admin"
        ],
        "summary": "Get Applicant Feature Access",
        "description": "**Requires permission:** *Admin*\n\nList the applicant feature sets and whether each is enabled for applicants (Feature 002, FR-028).",
        "operationId": "PanopticApiEndpointsAdminApplicantAccessGetApplicantAccessEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - feature sets returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetApplicantAccess_Response"
                },
                "example": {
                  "featureSets": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Admin/ApplicantAccess/{key}": {
      "put": {
        "tags": [
          "Admin"
        ],
        "summary": "Update Applicant Feature Access",
        "description": "**Requires permission:** *Admin*\n\nEnable or disable an applicant feature set (Feature 002, FR-028). Admin-gated; audited.",
        "operationId": "PanopticApiEndpointsAdminApplicantAccessPutApplicantAccessEndpoint",
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutApplicantAccess_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - feature set updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PutApplicantAccess_Response"
                },
                "example": {
                  "key": "",
                  "label": "",
                  "enabledForApplicants": false
                }
              }
            }
          },
          "404": {
            "description": "Feature set not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Admin/AcademicYear": {
      "get": {
        "tags": [
          "Admin"
        ],
        "summary": "Get Academic Years",
        "description": "**Requires permission:** *Admin*\n\nList academic years with the applied current year (Current) and the admin's nominated year (NominatedCurrent). Admin-gated.",
        "operationId": "PanopticApiEndpointsAdminAcademicYearGetAcademicYearsEndpoint",
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - academic years returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAcademicYears_Response"
                },
                "example": {
                  "academicYears": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/Admin/AcademicYear/Nominate": {
      "put": {
        "tags": [
          "Admin"
        ],
        "summary": "Nominate Current Academic Year",
        "description": "**Requires permission:** *Admin*\n\nSet the admin-nominated current academic year (intent). Records the nomination only; it is applied to the live Current flag by the overnight sync so all derived data updates in one pass. Pass a null AcademicYearId to clear the nomination and revert to automatic selection. Admin-gated; audited.",
        "operationId": "PanopticApiEndpointsAdminAcademicYearPutNominateAcademicYearEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutNominateAcademicYear_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - nomination updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PutNominateAcademicYear_Response"
                },
                "example": {
                  "academicYears": []
                }
              }
            }
          },
          "404": {
            "description": "Academic year not found"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/AccidentForms": {
      "get": {
        "tags": [
          "Accidentforms"
        ],
        "summary": "Get Accident Forms",
        "description": "**Requires permission:** *StaffMember*\n\nGet Accident Forms with filtering, sorting and paging",
        "operationId": "PanopticApiEndpointsAccidentReportingGetAccidentFormsEndpoint",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAccidentForms_Response"
                },
                "example": {
                  "data": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Accidentforms"
        ],
        "summary": "Update Accident Form",
        "description": "**Requires permission:** *StaffMember*\n\nUpdates an existing Accident Form",
        "operationId": "PanopticApiEndpointsAccidentReportingPatchAccidentFormEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchAccidentForm_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Updated accident form"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - An Error Occurred - Could not update accident form please try again"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Accidentforms"
        ],
        "summary": "Insert Accident Form",
        "description": "**Requires permission:** *StaffMember*\n\nInserts a accident form into the database, and inserts injuries along with a visitor if applicable ",
        "operationId": "PanopticApiEndpointsAccidentReportingPostAccidentFormEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "x-name": "Request",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostAccidentForm_Request"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": "Success - Inserted accident form"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "An Error Occurred - An Error Occurred - Could not insert accident form please try again"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    },
    "/About": {
      "get": {
        "tags": [
          "About"
        ],
        "summary": "Get About",
        "description": "**Requires permissions:** *Leaver* or *NewJoiner* or *StaffMember* or *Student*\n\nGet details about the logged in user",
        "operationId": "PanopticApiEndpointsAboutGetAboutEndpoint",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "Success - Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAbout_Response"
                },
                "example": {
                  "aboutMeSections": []
                }
              }
            }
          },
          "400": {
            "description": "An Error Occurred - Explain Error"
          }
        },
        "security": [
          {
            "JWTBearerAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "GetAttendanceCodes_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "codes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttendanceCode"
            }
          }
        }
      },
      "Meta": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "AttendanceCode": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "attendanceCodeId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 8
          },
          "description": {
            "type": "string",
            "maxLength": 255
          },
          "category": {
            "type": "string",
            "maxLength": 50
          },
          "eventType": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "session": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "order": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "display": {
            "type": "boolean",
            "nullable": true
          },
          "archived": {
            "type": "boolean"
          },
          "showInAbsenceOffex": {
            "type": "boolean"
          },
          "isAbsent": {
            "type": "boolean"
          },
          "isPresent": {
            "type": "boolean"
          },
          "isLate": {
            "type": "boolean"
          },
          "isUnauthorised": {
            "type": "boolean"
          }
        }
      },
      "GetAttendanceCodes_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchAttendanceCode_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "code": {
            "$ref": "#/components/schemas/AttendanceCode"
          }
        }
      },
      "PatchAttendanceCode_Request": {
        "type": "object",
        "example": {
          "code": {
            "code": "",
            "description": "",
            "category": "",
            "archived": false,
            "showInAbsenceOffex": false,
            "isAbsent": false,
            "isPresent": false,
            "isLate": false,
            "isUnauthorised": false
          }
        },
        "additionalProperties": false,
        "properties": {
          "code": {
            "$ref": "#/components/schemas/AttendanceCode"
          }
        }
      },
      "PostAttendanceCode_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "code": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AttendanceCode"
              }
            ]
          }
        }
      },
      "PostAttendanceCode_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "code": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AttendanceCode"
              }
            ]
          }
        }
      },
      "GetAttendanceEntries_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "attendanceEntries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttendanceEntry"
            }
          }
        }
      },
      "AttendanceEntry": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "attendanceEntryId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "studentUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "studentName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Student"
              }
            ]
          },
          "lessonId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "lesson": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Lesson"
              }
            ]
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "attendanceCode": {
            "type": "string",
            "maxLength": 8,
            "nullable": true
          },
          "submitted": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "staffName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "staffUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "staff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StaffMember"
              }
            ]
          },
          "archived": {
            "type": "boolean"
          },
          "periodId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "periodNumber": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "period": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Period"
              }
            ]
          },
          "classId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "classCode": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "class": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Class"
              }
            ]
          },
          "subjectId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "subjectCode": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "subject": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Subject"
              }
            ]
          },
          "houseId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "house": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/House"
              }
            ]
          },
          "houseCode": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "notes": {
            "type": "string",
            "maxLength": 1024,
            "nullable": true
          },
          "futureAbsenceId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "absentAlertCounted": {
            "type": "boolean"
          },
          "attendanceCodeObject": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AttendanceCode"
              }
            ]
          },
          "isAm": {
            "type": "boolean"
          },
          "isPm": {
            "type": "boolean"
          },
          "isRegistrationPeriod": {
            "type": "boolean"
          }
        }
      },
      "Student": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studentId": {
            "type": "string",
            "format": "guid"
          },
          "academicYearId": {
            "type": "string",
            "format": "guid"
          },
          "misId": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "externalId2": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "upi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "upn": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "inUse": {
            "type": "boolean"
          },
          "email": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "academicHouseId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "boardingHouseId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "yearGroup": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "form": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "pupilType": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "leaveDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "initials": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "forename": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "preferredName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "middleNames": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "surname": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "gender": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "pronouns": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "addressId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "addressLine1": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "locality": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "administrativeArea": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "country": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "mobileNumber": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "daytimeNumber": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "eveningNumber": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "nationality": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "secondNationality": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "appAccess": {
            "type": "boolean"
          },
          "candidateNumber": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "nationalityDescription": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "yearJoined": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "previousSchoolId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "attendanceEntries": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/AttendanceEntry"
            }
          },
          "photo": {
            "type": "string",
            "nullable": true
          },
          "canBeMasqueraded": {
            "type": "boolean"
          },
          "sendRecord": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sql02SendRecord"
              }
            ]
          },
          "ealRecord": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sql02EalRecord"
              }
            ]
          },
          "medicalRecord": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MedicalSummary"
              }
            ]
          },
          "academicHouseObject": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/House"
              }
            ]
          },
          "boardingHouseObject": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/House"
              }
            ]
          },
          "formObject": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Form"
              }
            ]
          },
          "yearObject": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Year"
              }
            ]
          },
          "relations": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Relationship"
            }
          },
          "inverseRelations": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Relationship"
            }
          },
          "classes": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Class"
            }
          },
          "musicLessons": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MusicLesson"
            }
          },
          "previousSchool": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OtherSchool"
              }
            ]
          },
          "userFields": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/UserField"
            }
          }
        }
      },
      "Sql02SendRecord": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "sendId": {
            "type": "integer",
            "format": "int32"
          },
          "pupil_Name_Id": {
            "type": "integer",
            "format": "int32"
          },
          "deleted": {
            "type": "boolean",
            "nullable": true
          },
          "priority": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "laptopUser": {
            "type": "boolean",
            "nullable": true
          },
          "access": {
            "type": "string",
            "nullable": true
          },
          "need": {
            "type": "string",
            "nullable": true
          },
          "youNeedTo": {
            "type": "string",
            "nullable": true
          },
          "mentor": {
            "type": "boolean",
            "nullable": true
          },
          "regular": {
            "type": "boolean",
            "nullable": true
          },
          "leadTeacher": {
            "type": "string",
            "maxLength": 50,
            "minLength": 0,
            "nullable": true
          },
          "targets": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Sql02EalRecord": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "ealId": {
            "type": "integer",
            "format": "int32"
          },
          "pupil_Name_Id": {
            "type": "integer",
            "format": "int32"
          },
          "deleted": {
            "type": "boolean",
            "nullable": true
          },
          "priority": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "access": {
            "type": "string",
            "nullable": true
          },
          "need": {
            "type": "string",
            "nullable": true
          },
          "youNeedTo": {
            "type": "string",
            "nullable": true
          },
          "leadTeacher": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "listening": {
            "type": "string",
            "nullable": true
          },
          "reading": {
            "type": "string",
            "nullable": true
          },
          "writing": {
            "type": "string",
            "nullable": true
          },
          "speaking": {
            "type": "string",
            "nullable": true
          },
          "otherLanguages": {
            "type": "string",
            "nullable": true
          },
          "furtherComments": {
            "type": "string",
            "nullable": true
          },
          "pupil_Name_Id_String": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "MedicalSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "pupilMedicalId": {
            "type": "integer",
            "format": "int32"
          },
          "nameId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "medicalCondition": {
            "type": "string",
            "nullable": true
          },
          "medicalInformation": {
            "type": "string",
            "nullable": true
          },
          "allergy": {
            "type": "string",
            "nullable": true
          },
          "allergyInformation": {
            "type": "string",
            "nullable": true
          },
          "epiPen": {
            "type": "string",
            "nullable": true
          },
          "epiPenNotes": {
            "type": "string",
            "nullable": true
          },
          "inhaler": {
            "type": "string",
            "nullable": true
          },
          "inhalerNotes": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "House": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "houseId": {
            "type": "string",
            "format": "guid"
          },
          "misId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "inUse": {
            "type": "boolean"
          },
          "code": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "type": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "day": {
            "type": "boolean",
            "nullable": true
          },
          "addressLine1": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "locality": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "administrativeArea": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "country": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "longLat": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "whatThreeWords": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "daytimeNumber": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "staff": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/HouseStaff"
            }
          }
        }
      },
      "HouseStaff": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "houseStaffId": {
            "type": "string",
            "format": "guid"
          },
          "houseId": {
            "type": "string",
            "format": "guid"
          },
          "houseCode": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "staffUPI": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "role": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "bookableInHouseTours": {
            "type": "boolean"
          },
          "updateInSync": {
            "type": "boolean"
          },
          "staff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StaffMember"
              }
            ]
          }
        }
      },
      "StaffMember": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "staffId": {
            "type": "string",
            "format": "guid"
          },
          "employeeId": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "misId": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "externalId2": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "hrId": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "payrollId": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "upi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "inUse": {
            "type": "boolean"
          },
          "email": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "staffType": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "school": {
            "type": "string",
            "maxLength": 10,
            "nullable": true
          },
          "gender": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "pronouns": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "leaveDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "initials": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "title": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "forename": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "preferredName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "middleNames": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "surname": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "jobTitle": {
            "type": "string",
            "maxLength": 320,
            "nullable": true
          },
          "mobileNumber": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "internalNumber": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "schoolNumber": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "addressId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "addressLine1": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "locality": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "administrativeArea": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "country": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "appAccess": {
            "type": "boolean"
          },
          "photo": {
            "type": "string",
            "nullable": true
          },
          "canBeMasqueraded": {
            "type": "boolean"
          },
          "classes": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Class"
            }
          },
          "userFields": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/UserField"
            }
          }
        }
      },
      "Class": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "classId": {
            "type": "string",
            "format": "guid"
          },
          "academicYearId": {
            "type": "string",
            "format": "guid"
          },
          "inUse": {
            "type": "boolean"
          },
          "misId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "subjectId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "room": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "yearGroup": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "classStaff": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ClassStaff"
            }
          },
          "students": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ClassStudent"
            }
          }
        }
      },
      "ClassStaff": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "classStaffId": {
            "type": "string",
            "format": "guid"
          },
          "classId": {
            "type": "string",
            "format": "guid"
          },
          "staffUPI": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "reportWriter": {
            "type": "boolean"
          },
          "parentsEvening": {
            "type": "boolean"
          },
          "staff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StaffMember"
              }
            ]
          },
          "class": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Class"
              }
            ]
          }
        }
      },
      "ClassStudent": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "classStudentId": {
            "type": "string",
            "format": "guid"
          },
          "classId": {
            "type": "string",
            "format": "guid"
          },
          "studentUPI": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Student"
              }
            ]
          }
        }
      },
      "UserField": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "upi",
          "fromMis"
        ],
        "properties": {
          "userFieldId": {
            "type": "string",
            "format": "guid"
          },
          "upi": {
            "type": "string",
            "format": "guid",
            "minLength": 1
          },
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "fromMis": {
            "type": "boolean"
          }
        }
      },
      "Form": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "formId": {
            "type": "string",
            "format": "guid"
          },
          "academicYearId": {
            "type": "string",
            "format": "guid"
          },
          "inUse": {
            "type": "boolean"
          },
          "misId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "year": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "room": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "staff": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/StaffMember"
            }
          },
          "students": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Student"
            }
          }
        }
      },
      "Year": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "yearId": {
            "type": "string",
            "format": "guid"
          },
          "academicYearId": {
            "type": "string",
            "format": "guid"
          },
          "misId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "finalYear": {
            "type": "boolean"
          },
          "dfEYear": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "position": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "inUse": {
            "type": "boolean"
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "students": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Student"
            }
          },
          "updatedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          }
        }
      },
      "Relationship": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "relationshipId": {
            "type": "string",
            "format": "guid"
          },
          "fromUPI": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "toUPI": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "relationshipName": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "rank": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "billing": {
            "type": "boolean"
          },
          "emergency": {
            "type": "boolean"
          },
          "medical": {
            "type": "boolean"
          },
          "courtOrder": {
            "type": "boolean"
          },
          "restricted": {
            "type": "boolean"
          },
          "relationshipType": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "createdByApp": {
            "type": "boolean"
          },
          "fromPerson": {
            "nullable": true
          },
          "toPerson": {
            "nullable": true
          }
        }
      },
      "MusicLesson": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "studentNameId": {
            "type": "integer",
            "format": "int32"
          },
          "studentUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "teacherEmail": {
            "type": "string",
            "nullable": true
          },
          "instrumentId": {
            "type": "integer",
            "format": "int32"
          },
          "lessons": {
            "type": "integer",
            "format": "int32"
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "edited": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "free": {
            "type": "boolean",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "archived": {
            "type": "boolean"
          },
          "instrument": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MusicInstrument"
              }
            ]
          },
          "teacher": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StaffMember"
              }
            ]
          },
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Student"
              }
            ]
          },
          "scholar": {
            "type": "boolean"
          }
        }
      },
      "MusicInstrument": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "archived": {
            "type": "boolean"
          },
          "orchestralOrder": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "OtherSchool": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "otherSchoolId": {
            "type": "string",
            "format": "guid"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "addressLine1": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "locality": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "administrativeArea": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "country": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "primaryContactName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "email": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "telephone": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "website": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          }
        }
      },
      "Lesson": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "lessonId": {
            "type": "string",
            "format": "guid"
          },
          "class": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Class"
              }
            ]
          },
          "dayDate": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/DayDate"
              }
            ]
          },
          "period": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Period"
              }
            ]
          },
          "room": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Room"
              }
            ]
          },
          "staffUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "staff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StaffMember"
              }
            ]
          },
          "archived": {
            "type": "boolean"
          }
        }
      },
      "DayDate": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "dayDateId": {
            "type": "string",
            "format": "guid"
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "day": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Day"
              }
            ]
          }
        }
      },
      "Day": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "dayId": {
            "type": "string",
            "format": "guid"
          },
          "weekCode": {
            "type": "string"
          },
          "dayOfWeek": {
            "type": "string"
          },
          "order": {
            "type": "integer",
            "format": "int32"
          },
          "showInTimetable": {
            "type": "boolean"
          }
        }
      },
      "Period": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "periodId": {
            "type": "string",
            "format": "guid"
          },
          "description": {
            "type": "string"
          },
          "day": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Day"
              }
            ]
          },
          "startTime": {
            "type": "string",
            "format": "time",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "format": "time",
            "nullable": true
          },
          "periodNumber": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "session": {
            "type": "string"
          },
          "archived": {
            "type": "boolean"
          },
          "timetableMisId": {
            "type": "string",
            "nullable": true
          },
          "timetableId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "timetable": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Timetable"
              }
            ]
          },
          "class": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Class"
              }
            ]
          },
          "lesson": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Lesson"
              }
            ]
          },
          "house": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/House"
              }
            ]
          },
          "attendanceRegistrationPermissions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttendancePeriodRegistrationPermission"
            }
          }
        }
      },
      "Timetable": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "timetableId": {
            "type": "string",
            "format": "guid"
          },
          "description": {
            "type": "string",
            "maxLength": 255
          },
          "archived": {
            "type": "boolean"
          },
          "current": {
            "type": "boolean"
          },
          "misId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          }
        }
      },
      "AttendancePeriodRegistrationPermission": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "periodId": {
            "type": "string",
            "format": "guid"
          },
          "permission": {
            "type": "string"
          }
        }
      },
      "Room": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "roomId": {
            "type": "string",
            "format": "guid"
          },
          "misId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "inUse": {
            "type": "boolean"
          },
          "code": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "timetableCode": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "location": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          }
        }
      },
      "Subject": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "subjectId": {
            "type": "string",
            "format": "guid"
          },
          "misId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "inUse": {
            "type": "boolean",
            "nullable": true
          },
          "department": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "subjectHeads": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/SubjectHead"
            }
          },
          "classes": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Class"
            }
          }
        }
      },
      "SubjectHead": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "subjectHeadId": {
            "type": "string",
            "format": "guid"
          },
          "subjectId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "staffUPI": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "staff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StaffMember"
              }
            ]
          }
        }
      },
      "GetAttendanceEntries_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchAttendanceEntries_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "attendanceEntries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttendanceEntry"
            }
          }
        }
      },
      "PatchAttendanceEntries_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "attendanceEntries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttendanceEntry"
            }
          }
        }
      },
      "PostGenerateMobileLogin_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "mobile": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetYears_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "years": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Year"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetYears_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetYearTerms_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "terms": {
            "type": "array",
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetYearTerms_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetInsightFiles_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sharedFiles": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MicrosoftInsightsFile"
            }
          },
          "usedFiles": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MicrosoftInsightsFile"
            }
          },
          "trendingFiles": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MicrosoftInsightsFile"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "MicrosoftInsightsFile": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "lastShared": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LastShared"
              }
            ]
          },
          "resourceVisualization": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ResourceVisualization"
              }
            ]
          },
          "resourceReference": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ResourceReference"
              }
            ]
          }
        }
      },
      "LastShared": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sharedDateTime": {
            "type": "string",
            "nullable": true
          },
          "sharingType": {
            "type": "string",
            "nullable": true
          },
          "sharedBy": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SharedBy"
              }
            ]
          }
        }
      },
      "SharedBy": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ResourceVisualization": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "title": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "mediaType": {
            "type": "string",
            "nullable": true
          },
          "previewImageUrl": {
            "type": "string",
            "nullable": true
          },
          "previewText": {
            "type": "string",
            "nullable": true
          },
          "containerWebUrl": {
            "type": "string",
            "nullable": true
          },
          "containerDisplayName": {
            "type": "string",
            "nullable": true
          },
          "containerType": {
            "type": "string",
            "nullable": true
          },
          "preview": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MicrosoftInsightsFilePreview"
              }
            ]
          }
        }
      },
      "MicrosoftInsightsFilePreview": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "@odata.context": {
            "type": "string",
            "nullable": true
          },
          "height": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "width": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "ResourceReference": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "webUrl": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetJoinedTeams_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "teams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MicrosoftTeam"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "MicrosoftTeam": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "isArchived": {
            "type": "boolean"
          },
          "tenantId": {
            "type": "string",
            "nullable": true
          },
          "members": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MicrosoftUser"
            }
          },
          "owners": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MicrosoftUser"
            }
          },
          "photo": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "MicrosoftUser": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "@odata.context": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "accountEnabled": {
            "type": "boolean"
          },
          "manager": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MicrosoftUser"
              }
            ]
          },
          "businessPhones": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "jobTitle": {
            "type": "string",
            "nullable": true
          },
          "mail": {
            "type": "string",
            "nullable": true
          },
          "mailNickname": {
            "type": "string",
            "nullable": true
          },
          "mobilePhone": {
            "type": "string",
            "nullable": true
          },
          "onPremisesDistinguishedName": {
            "type": "string",
            "nullable": true
          },
          "officeLocation": {
            "type": "string",
            "nullable": true
          },
          "onPremisesDomainName": {
            "type": "string",
            "nullable": true
          },
          "onPremisesImmutableId": {
            "type": "string",
            "nullable": true
          },
          "onPremisesLastSyncDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "onPremisesSamAccountName": {
            "type": "string",
            "nullable": true
          },
          "onPremisesSyncEnabled": {
            "type": "boolean"
          },
          "onPremisesUserPrincipalName": {
            "type": "string",
            "nullable": true
          },
          "otherMails": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "passwordPolicies": {
            "type": "string",
            "nullable": true
          },
          "refreshTokensValidFromDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "usageLocation": {
            "type": "string",
            "nullable": true
          },
          "userType": {
            "type": "string",
            "nullable": true
          },
          "assignedLicenses": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/AssignedLicense"
            }
          },
          "assignedPlans": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/AssignedPlan"
            }
          },
          "authorizationInfo": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AuthorizationInfo"
              }
            ]
          },
          "deviceKeys": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/DeviceKey"
            }
          },
          "identities": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Identity"
            }
          },
          "onPremisesExtensionAttributes": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OnPremisesExtensionAttributes"
              }
            ]
          },
          "onPremisesProvisioningErrors": {
            "type": "array",
            "nullable": true,
            "items": {}
          },
          "provisionedPlans": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ProvisionedPlan"
            }
          },
          "givenName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "userPrincipalName": {
            "type": "string",
            "nullable": true
          },
          "photo": {
            "type": "string",
            "nullable": true
          },
          "canBeMasqueraded": {
            "type": "boolean"
          }
        }
      },
      "AssignedLicense": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "disabledPlans": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "skuId": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "AssignedPlan": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "assignedDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "capabilityStatus": {
            "type": "string",
            "nullable": true
          },
          "service": {
            "type": "string",
            "nullable": true
          },
          "servicePlanId": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "AuthorizationInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "certificateUserIds": {
            "type": "array",
            "nullable": true,
            "items": {}
          }
        }
      },
      "DeviceKey": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "deviceId": {
            "type": "string",
            "nullable": true
          },
          "keyMaterial": {
            "type": "string",
            "nullable": true
          },
          "keyType": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Identity": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "signInType": {
            "type": "string",
            "nullable": true
          },
          "issuer": {
            "type": "string",
            "nullable": true
          },
          "issuerAssignedId": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "OnPremisesExtensionAttributes": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "extensionAttribute1": {
            "type": "string",
            "nullable": true
          },
          "extensionAttribute2": {
            "type": "string",
            "nullable": true
          },
          "extensionAttribute3": {
            "type": "string",
            "nullable": true
          },
          "extensionAttribute4": {
            "type": "string",
            "nullable": true
          },
          "extensionAttribute5": {
            "type": "string",
            "nullable": true
          },
          "extensionAttribute6": {
            "type": "string",
            "nullable": true
          },
          "extensionAttribute7": {
            "type": "string",
            "nullable": true
          },
          "extensionAttribute8": {
            "type": "string",
            "nullable": true
          },
          "extensionAttribute9": {
            "type": "string",
            "nullable": true
          },
          "extensionAttribute10": {
            "type": "string",
            "nullable": true
          },
          "extensionAttribute11": {
            "type": "string",
            "nullable": true
          },
          "extensionAttribute12": {
            "type": "string",
            "nullable": true
          },
          "extensionAttribute13": {
            "type": "string",
            "nullable": true
          },
          "extensionAttribute14": {
            "type": "string",
            "nullable": true
          },
          "extensionAttribute15": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProvisionedPlan": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "capabilityStatus": {
            "type": "string",
            "nullable": true
          },
          "provisioningStatus": {
            "type": "string",
            "nullable": true
          },
          "service": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetPeopleInsights_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MicrosoftUser"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetInsightsFilePreviewImage_Response": {
        "allOf": [
          {
            "$ref": "#/components/schemas/MicrosoftInsightsFilePreview"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "GetInsightsFilePreviewImage_Request": {
        "allOf": [
          {
            "$ref": "#/components/schemas/MicrosoftInsightsFile"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "GetWellbeingCompletion_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "surveyCompletions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SurveyCompletionView"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "SurveyCompletionView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Student"
              }
            ]
          },
          "completed": {
            "type": "boolean"
          }
        }
      },
      "GetWellbeingCompletion_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetWellbeingSurveys_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "wellbeingSurveys": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WellbeingSurvey"
            }
          },
          "completedThisYear": {
            "type": "boolean"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "WellbeingSurvey": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "username": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "email": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "academicYear": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "studentYear": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "house": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q1": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q2": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q3": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q4": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q5": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q6": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q7": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q8": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q9": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q10": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q11": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q12": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q13": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q14": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q15": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q16": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q17": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q18": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q19": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q20": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q21": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "q22": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          }
        }
      },
      "GetWellbeingSurveys_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostWellbeingSurvey_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "wellbeingSurvey": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WellbeingSurvey"
              }
            ]
          }
        }
      },
      "GetWeekendLeaveAddresses_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WeekendLeaveAddress"
            }
          }
        }
      },
      "WeekendLeaveAddress": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "contactUpi": {
            "type": "string",
            "format": "guid"
          },
          "name": {
            "type": "string"
          },
          "relationship": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "type": "string"
          }
        }
      },
      "GetWeekendLeaveAddresses_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetWeekendLeaveForms_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "forms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WeekendLeaveForm"
            }
          }
        }
      },
      "WeekendLeaveForm": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "parentUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "parentNameId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "studentUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "studentNameId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "option": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WeekendLeaveOption"
              }
            ]
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "addressContactUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "date": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WeekendLeaveDate"
              }
            ]
          },
          "archived": {
            "type": "boolean",
            "nullable": true
          },
          "submitted": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "WeekendLeaveOption": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "requiresDescription": {
            "type": "boolean"
          },
          "requiresAddress": {
            "type": "boolean"
          }
        }
      },
      "WeekendLeaveDate": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "weekendId": {
            "type": "integer",
            "format": "int32"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "start": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "end": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "day": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WeekendLeaveDay"
              }
            ]
          },
          "archiveOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "parentClose": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "showFrom": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "archived": {
            "type": "boolean",
            "nullable": true
          },
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WeekendLeaveDateOption"
            }
          }
        }
      },
      "WeekendLeaveDay": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "WeekendLeaveDateOption": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "dateId": {
            "type": "integer",
            "format": "int32"
          },
          "option": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WeekendLeaveOption"
              }
            ]
          }
        }
      },
      "GetWeekendLeaveForms_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchWeekendLeaveForm_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "form": {
            "$ref": "#/components/schemas/WeekendLeaveForm"
          }
        }
      },
      "PatchWeekendLeaveForm_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "form": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WeekendLeaveForm"
              }
            ]
          }
        }
      },
      "PostWeekendLeaveForm_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "form": {
            "$ref": "#/components/schemas/WeekendLeaveForm"
          }
        }
      },
      "PostWeekendLeaveForm_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "form": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WeekendLeaveForm"
              }
            ]
          }
        }
      },
      "GetWeekendLeaveOptions_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WeekendLeaveOption"
            }
          }
        }
      },
      "GetWeekendLeaveOptions_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetWeekendLeaveReminders_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "reminders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WeekendLeaveReminder"
            }
          }
        }
      },
      "WeekendLeaveReminder": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "weekendId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "houseCode": {
            "type": "string",
            "nullable": true
          },
          "sent": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "sender": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetWeekendLeaveReminders_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostWeekendLeaveReminder_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "reminder": {
            "$ref": "#/components/schemas/WeekendLeaveReminder"
          }
        }
      },
      "PostWeekendLeaveReminder_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "reminder": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WeekendLeaveReminder"
              }
            ]
          }
        }
      },
      "DeleteWeekendLeaveWeekend_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetWeekendLeaveWeekends_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "weekends": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WeekendLeaveWeekend"
            }
          }
        }
      },
      "WeekendLeaveWeekend": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "start": {
            "type": "string",
            "format": "date-time"
          },
          "end": {
            "type": "string",
            "format": "date-time"
          },
          "parentClose": {
            "type": "string",
            "format": "date-time"
          },
          "archiveOn": {
            "type": "string",
            "format": "date-time"
          },
          "showFrom": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "dates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WeekendLeaveDate"
            }
          },
          "archived": {
            "type": "boolean"
          }
        }
      },
      "GetWeekendLeaveWeekends_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchWeekendLeaveWeekend_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "weekend": {
            "$ref": "#/components/schemas/WeekendLeaveWeekend"
          }
        }
      },
      "PatchWeekendLeaveWeekend_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "weekend": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WeekendLeaveWeekend"
              }
            ]
          }
        }
      },
      "PostWeekendLeaveWeekend_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "weekend": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WeekendLeaveWeekend"
              }
            ]
          }
        }
      },
      "GetUsers_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserWithObjects"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "UserWithObjects": {
        "allOf": [
          {
            "$ref": "#/components/schemas/User"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "students": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/Student"
                }
              },
              "staffMembers": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/StaffMember"
                }
              },
              "contacts": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/Contact"
                }
              },
              "loginLogs": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/LoginLog"
                }
              }
            }
          }
        ]
      },
      "Contact": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "contactId": {
            "type": "string",
            "format": "guid"
          },
          "misId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "feeId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "upi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "inUse": {
            "type": "boolean"
          },
          "email": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "occupation": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "initials": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "title": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "forename": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "preferredName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "middleNames": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "surname": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "gender": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "pronouns": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "addressId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "addressLine1": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "locality": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "administrativeArea": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "country": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "mobileNumber": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "daytimeNumber": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "eveningNumber": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "appAccess": {
            "type": "boolean"
          },
          "letterSalutation": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "labelSalutation": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "flag": {
            "type": "string",
            "nullable": true
          },
          "deceased": {
            "type": "boolean"
          },
          "photo": {
            "type": "string",
            "nullable": true
          },
          "canBeMasqueraded": {
            "type": "boolean"
          },
          "relations": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Relationship"
            }
          },
          "inverseRelations": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Relationship"
            }
          },
          "userFields": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/UserField"
            }
          },
          "relationshipType": {
            "type": "string",
            "nullable": true
          },
          "relationshipName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "LoginLog": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "userId": {
            "type": "string",
            "format": "guid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "type": {
            "$ref": "#/components/schemas/LoginType"
          },
          "provider": {
            "$ref": "#/components/schemas/LoginProvider"
          },
          "status": {
            "$ref": "#/components/schemas/Status"
          },
          "details": {
            "type": "string",
            "nullable": true
          },
          "ip": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "deviceName": {
            "type": "string",
            "nullable": true
          },
          "deviceType": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "LoginType": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Login",
          "Refresh",
          "Masquerade"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "LoginProvider": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Email",
          "Microsoft",
          "Apple",
          "Google",
          "Firefly",
          "NA",
          "PanopticAuth"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6
        ]
      },
      "Status": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Success",
          "Failure"
        ],
        "enum": [
          0,
          1
        ]
      },
      "User": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "userId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "userType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/UserType"
              }
            ]
          },
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "preferredName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "surname": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "mail": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "email": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "upi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "studentUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "staffUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "contactUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "studentIds": {
            "type": "string",
            "maxLength": 4000,
            "nullable": true
          },
          "leaverUpis": {
            "type": "string",
            "maxLength": 4000,
            "nullable": true
          },
          "applicantUpis": {
            "type": "string",
            "maxLength": 4000,
            "nullable": true
          },
          "studentNameIds": {
            "type": "string",
            "maxLength": 4000,
            "nullable": true
          },
          "schoolPostIds": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "entraId": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "nameId": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "staffId": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "tokenGenerated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "impersonating": {
            "type": "boolean"
          },
          "impersonator": {
            "type": "string",
            "nullable": true
          },
          "impersonatorName": {
            "type": "string",
            "nullable": true
          },
          "userTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserType"
            }
          },
          "userPermissionList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserPermission"
            }
          },
          "nameForToken": {
            "type": "string"
          },
          "userPermissions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserPermission"
            }
          },
          "userPermissionGroupMembers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserPermissionGroupMember"
            }
          }
        }
      },
      "UserType": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Student",
          "Parent",
          "StaffMember",
          "Unknown",
          "NewJoiner",
          "Guardian",
          "NewParent",
          "Leaver"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7
        ]
      },
      "UserPermission": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "userPermissionId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "userId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "type": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "UserPermissionGroupMember": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "userPermissionGroupMemberId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "userPermissionGroupId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "userId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "userPermissionGroup": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/UserPermissionGroup"
              }
            ]
          },
          "user": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/User"
              }
            ]
          }
        }
      },
      "UserPermissionGroup": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "userPermissionsGroupId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "identifier": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "type": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/GroupType"
              }
            ]
          },
          "userPermissionGroupMembers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserPermissionGroupMember"
            }
          }
        }
      },
      "GroupType": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Office365",
          "MIS"
        ],
        "enum": [
          1,
          2
        ]
      },
      "GetUsers_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetSearchUnsplash_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "photos": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/UnsplashPhoto"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "UnsplashPhoto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "nullable": true
          },
          "updated_at": {
            "type": "string",
            "nullable": true
          },
          "promoted_at": {
            "type": "string",
            "nullable": true
          },
          "width": {
            "type": "integer",
            "format": "int32"
          },
          "height": {
            "type": "integer",
            "format": "int32"
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "blur_hash": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "alt_description": {
            "type": "string",
            "nullable": true
          },
          "urls": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Urls"
              }
            ]
          },
          "links": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/UnsplashPhotoLinks"
              }
            ]
          },
          "categories": {
            "type": "array",
            "nullable": true,
            "items": {}
          },
          "likes": {
            "type": "integer",
            "format": "int32"
          },
          "liked_by_user": {
            "type": "boolean"
          },
          "current_user_collections": {
            "type": "array",
            "nullable": true,
            "items": {}
          },
          "sponsorship": {
            "nullable": true
          },
          "topic_submissions": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/TopicSubmissions"
              }
            ]
          },
          "user": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/User2"
              }
            ]
          },
          "tags": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Tag"
            }
          }
        }
      },
      "Urls": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "raw": {
            "type": "string",
            "nullable": true
          },
          "full": {
            "type": "string",
            "nullable": true
          },
          "regular": {
            "type": "string",
            "nullable": true
          },
          "small": {
            "type": "string",
            "nullable": true
          },
          "thumb": {
            "type": "string",
            "nullable": true
          },
          "small_s3": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "UnsplashPhotoLinks": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "self": {
            "type": "string",
            "nullable": true
          },
          "html": {
            "type": "string",
            "nullable": true
          },
          "download": {
            "type": "string",
            "nullable": true
          },
          "download_location": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "TopicSubmissions": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "business-work": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BusinessWork"
              }
            ]
          }
        }
      },
      "BusinessWork": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string",
            "nullable": true
          },
          "approved_on": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "User2": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "updated_at": {
            "type": "string",
            "nullable": true
          },
          "username": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "first_name": {
            "type": "string",
            "nullable": true
          },
          "last_name": {
            "type": "string",
            "nullable": true
          },
          "twitter_username": {
            "type": "string",
            "nullable": true
          },
          "portfolio_url": {
            "type": "string",
            "nullable": true
          },
          "bio": {
            "type": "string",
            "nullable": true
          },
          "location": {
            "type": "string",
            "nullable": true
          },
          "links": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/UserLinks"
              }
            ]
          },
          "profile_image": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ProfileImage"
              }
            ]
          },
          "instagram_username": {
            "type": "string",
            "nullable": true
          },
          "total_collections": {
            "type": "integer",
            "format": "int32"
          },
          "total_likes": {
            "type": "integer",
            "format": "int32"
          },
          "total_photos": {
            "type": "integer",
            "format": "int32"
          },
          "accepted_tos": {
            "type": "boolean"
          },
          "for_hire": {
            "type": "boolean"
          },
          "social": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Social"
              }
            ]
          }
        }
      },
      "UserLinks": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "self": {
            "type": "string",
            "nullable": true
          },
          "html": {
            "type": "string",
            "nullable": true
          },
          "photos": {
            "type": "string",
            "nullable": true
          },
          "likes": {
            "type": "string",
            "nullable": true
          },
          "portfolio": {
            "type": "string",
            "nullable": true
          },
          "following": {
            "type": "string",
            "nullable": true
          },
          "followers": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProfileImage": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "small": {
            "type": "string",
            "nullable": true
          },
          "medium": {
            "type": "string",
            "nullable": true
          },
          "large": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Social": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "instagram_username": {
            "type": "string",
            "nullable": true
          },
          "portfolio_url": {
            "type": "string",
            "nullable": true
          },
          "twitter_username": {
            "type": "string",
            "nullable": true
          },
          "paypal_email": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Tag": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetSearchUnsplash_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetDayLetter_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "dayLetter": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetPeriod_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "period": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Period"
              }
            ]
          }
        }
      },
      "GetPeriod_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetPeriods_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "periods": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Period"
            }
          }
        }
      },
      "GetPeriods_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchPeriod_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "period": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Period"
              }
            ]
          }
        }
      },
      "PatchPeriod_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "period": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Period"
              }
            ]
          }
        }
      },
      "PostPeriod_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "period": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Period"
              }
            ]
          }
        }
      },
      "PostPeriod_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "period": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Period"
              }
            ]
          }
        }
      },
      "GetLessons_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "lessons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Lesson"
            }
          }
        }
      },
      "GetLessons_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetTwoWeekTimetable_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "timetable": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimetableWeekView"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "TimetableWeekView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "week": {
            "type": "string",
            "nullable": true
          },
          "days": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimetableDayView"
            }
          }
        }
      },
      "TimetableDayView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "day": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Day"
              }
            ]
          },
          "periods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimetablePeriodView"
            }
          }
        }
      },
      "TimetablePeriodView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "period": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Period"
              }
            ]
          },
          "lessons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Lesson"
            }
          }
        }
      },
      "GetTwoWeekTimetable_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetUpcomingLessons_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "previousLesson": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Lesson"
              }
            ]
          },
          "nextLesson": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Lesson"
              }
            ]
          },
          "currentLesson": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Lesson"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetUpcomingLessons_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetTimetableAdminSets_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string"
          },
          "sets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimetableAdminSet"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "TimetableAdminSet": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "classId": {
            "type": "string",
            "format": "guid"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "yearGroup": {
            "type": "string",
            "nullable": true
          },
          "teachers": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "lessonsPerCycle": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetTimetableAdminSets_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetTimetableAdminStaff_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "staff": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimetableAdminPerson"
            }
          },
          "subjects": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "TimetableAdminPerson": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "upi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "name": {
            "type": "string"
          },
          "yearGroup": {
            "type": "string",
            "nullable": true
          },
          "house": {
            "type": "string",
            "nullable": true
          },
          "houseId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "form": {
            "type": "string",
            "nullable": true
          },
          "jobTitle": {
            "type": "string",
            "nullable": true
          },
          "setCount": {
            "type": "integer",
            "format": "int32"
          },
          "lessonsPerCycle": {
            "type": "integer",
            "format": "int32"
          },
          "isOutlier": {
            "type": "boolean"
          },
          "subjects": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "GetTimetableAdminStaff_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetTimetableSetCounts_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "students": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimetableAdminPerson"
            }
          },
          "yearGroups": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "houses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimetableAdminLookup"
            }
          },
          "forms": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "yearGroupNorms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimetableYearGroupNorm"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "TimetableAdminLookup": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "guid"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "TimetableYearGroupNorm": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "yearGroup": {
            "type": "string"
          },
          "medianSetCount": {
            "type": "integer",
            "format": "int32"
          },
          "lowest": {
            "type": "integer",
            "format": "int32"
          },
          "highest": {
            "type": "integer",
            "format": "int32"
          },
          "pupilCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetTimetableSetCounts_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetDaysAndPeriods_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "days": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Day"
            }
          },
          "periods": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Period"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetDaysAndPeriods_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetTimetable_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "lessons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Lesson"
            }
          },
          "showMore": {
            "type": "boolean"
          },
          "staffMember": {
            "type": "boolean"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetTimetable_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "DeletePeriod_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetSystemQueries_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "systemQueries": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/SystemQueryMeta"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "SystemQueryMeta": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "key": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "group": {
            "type": "string"
          },
          "columns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SystemQueryColumn"
            }
          },
          "refineFilters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SystemQueryRefineFilter"
            }
          }
        }
      },
      "SystemQueryColumn": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "key": {
            "type": "string"
          },
          "label": {
            "type": "string"
          }
        }
      },
      "SystemQueryRefineFilter": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "key": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "options": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          }
        }
      },
      "GetSystemQueries_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetSystemQuery_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "columns": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/SystemQueryColumn"
            }
          },
          "rows": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetSystemQuery_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetSubjects_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "subjects": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Subject"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetSubjects_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "DeleteSubjectHead_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchSubjectHead_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "subjectHead": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SubjectHead"
              }
            ]
          }
        }
      },
      "PostSubjectHead_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "subjectHead": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SubjectHead"
              }
            ]
          }
        }
      },
      "DeleteStudyLeaveWeek_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetStudyLeaveWeeks_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeaveWeeks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeaveWeek"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "StudyLeaveWeek": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeaveWeekId": {
            "type": "string",
            "format": "guid"
          },
          "start": {
            "type": "string",
            "format": "date-time"
          },
          "end": {
            "type": "string",
            "format": "date-time"
          },
          "archiveDate": {
            "type": "string",
            "format": "date-time"
          },
          "parentCloses": {
            "type": "string",
            "format": "date-time"
          },
          "archived": {
            "type": "boolean"
          },
          "description": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "studyLeaveDates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeaveDate"
            }
          },
          "studyLeaveWeekYears": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeaveWeekYear"
            }
          },
          "studyLeaveReminders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeaveReminder"
            }
          }
        }
      },
      "StudyLeaveDate": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeaveDateId": {
            "type": "string",
            "format": "guid"
          },
          "studyLeaveWeekId": {
            "type": "string",
            "format": "guid"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "weekendLeaveDateId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "description": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "studyLeaveOptionGroupId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "studyLeaveOptionGroup": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StudyLeaveOptionGroup"
              }
            ]
          },
          "studyLeavePeriodGroupId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "studyLeavePeriodGroup": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StudyLeavePeriodGroup"
              }
            ]
          }
        }
      },
      "StudyLeaveOptionGroup": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeaveOptionGroupId": {
            "type": "string",
            "format": "guid"
          },
          "name": {
            "type": "string",
            "maxLength": 255
          },
          "description": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "active": {
            "type": "boolean"
          },
          "studyLeaveOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeaveOption"
            }
          }
        }
      },
      "StudyLeaveOption": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeaveOptionId": {
            "type": "string",
            "format": "guid"
          },
          "studyLeaveOptionGroupId": {
            "type": "string",
            "format": "guid"
          },
          "name": {
            "type": "string",
            "maxLength": 255
          },
          "description": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 255
          },
          "weekendLeaveOptionId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "weekendLeaveOption": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WeekendLeaveOption"
              }
            ]
          },
          "studyLeaveOptionAccess": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeaveOptionAccess"
            }
          }
        }
      },
      "StudyLeaveOptionAccess": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeaveOptionAccessId": {
            "type": "string",
            "format": "guid"
          },
          "studyLeaveOptionId": {
            "type": "string",
            "format": "guid"
          },
          "houseId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "house": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/House"
              }
            ]
          },
          "yearId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "year": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Year"
              }
            ]
          }
        }
      },
      "StudyLeavePeriodGroup": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeavePeriodGroupId": {
            "type": "string",
            "format": "guid"
          },
          "name": {
            "type": "string",
            "maxLength": 255
          },
          "active": {
            "type": "boolean"
          },
          "studyLeavePeriods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeavePeriod"
            }
          }
        }
      },
      "StudyLeavePeriod": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeavePeriodId": {
            "type": "string",
            "format": "guid"
          },
          "studyLeavePeriodGroupId": {
            "type": "string",
            "format": "guid"
          },
          "name": {
            "type": "string",
            "maxLength": 255
          },
          "description": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "hasSubmissions": {
            "type": "boolean"
          },
          "syncToWeekendLeave": {
            "type": "boolean"
          },
          "studyLeavePeriodAccess": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeavePeriodAccess"
            }
          }
        }
      },
      "StudyLeavePeriodAccess": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeavePeriodAccessId": {
            "type": "string",
            "format": "guid"
          },
          "studyLeavePeriodId": {
            "type": "string",
            "format": "guid"
          },
          "houseId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "yearId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "house": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/House"
              }
            ]
          },
          "year": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Year"
              }
            ]
          }
        }
      },
      "StudyLeaveWeekYear": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeaveWeekYearId": {
            "type": "string",
            "format": "guid"
          },
          "studyLeaveWeekId": {
            "type": "string",
            "format": "guid"
          },
          "yearGroupId": {
            "type": "string",
            "format": "guid"
          },
          "year": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Year"
              }
            ]
          }
        }
      },
      "StudyLeaveReminder": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeaveReminderId": {
            "type": "string",
            "format": "guid"
          },
          "studyLeaveWeekId": {
            "type": "string",
            "format": "guid"
          },
          "senderUpi": {
            "type": "string",
            "format": "guid"
          },
          "houseId": {
            "type": "string",
            "format": "guid"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "customMessage": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "sentTo": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "studentUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Student"
              }
            ]
          }
        }
      },
      "GetStudyLeaveWeeks_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchStudyLeaveWeek_Request": {
        "type": "object",
        "example": {
          "studyLeaveWeek": {
            "studyLeaveWeekId": "e30ade84-e1e9-4687-b627-05d5bd68c23a",
            "start": "0001-01-01T00:00:00",
            "end": "0001-01-01T00:00:00",
            "archiveDate": "0001-01-01T00:00:00",
            "parentCloses": "0001-01-01T00:00:00",
            "archived": false,
            "studyLeaveDates": [],
            "studyLeaveWeekYears": [],
            "studyLeaveReminders": []
          }
        },
        "additionalProperties": false,
        "properties": {
          "studyLeaveWeek": {
            "$ref": "#/components/schemas/StudyLeaveWeek"
          }
        }
      },
      "PostStudyLeaveWeek_Request": {
        "type": "object",
        "example": {
          "studyLeaveWeek": {
            "studyLeaveWeekId": "56ff12ee-2a8c-403b-846d-396dba31867a",
            "start": "0001-01-01T00:00:00",
            "end": "0001-01-01T00:00:00",
            "archiveDate": "0001-01-01T00:00:00",
            "parentCloses": "0001-01-01T00:00:00",
            "archived": false,
            "studyLeaveDates": [],
            "studyLeaveWeekYears": [],
            "studyLeaveReminders": []
          }
        },
        "additionalProperties": false,
        "properties": {
          "studyLeaveWeek": {
            "$ref": "#/components/schemas/StudyLeaveWeek"
          }
        }
      },
      "DeleteStudyLeaveWeekYear_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetStudyLeaveWeekYears_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeaveWeekYears": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeaveWeekYear"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetStudyLeaveWeekYears_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchStudyLeaveWeekYear_Request": {
        "type": "object",
        "example": {
          "studyLeaveWeekYear": {
            "studyLeaveWeekYearId": "173a1205-8b7a-4706-9955-8f45fe648f25",
            "studyLeaveWeekId": "00000000-0000-0000-0000-000000000000",
            "yearGroupId": "00000000-0000-0000-0000-000000000000"
          }
        },
        "additionalProperties": false,
        "properties": {
          "studyLeaveWeekYear": {
            "$ref": "#/components/schemas/StudyLeaveWeekYear"
          }
        }
      },
      "PostStudyLeaveWeekYear_Request": {
        "type": "object",
        "example": {
          "studyLeaveWeekYear": {
            "studyLeaveWeekYearId": "cd11f45b-7c04-498f-befe-15b5ce37c3af",
            "studyLeaveWeekId": "00000000-0000-0000-0000-000000000000",
            "yearGroupId": "00000000-0000-0000-0000-000000000000"
          }
        },
        "additionalProperties": false,
        "properties": {
          "studyLeaveWeekYear": {
            "$ref": "#/components/schemas/StudyLeaveWeekYear"
          }
        }
      },
      "DeleteStudyLeaveDate_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetStudyLeaveDates_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeaveDates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeaveDate"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetStudyLeaveDates_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchStudyLeaveDate_Request": {
        "type": "object",
        "example": {
          "studyLeaveDate": {
            "studyLeaveDateId": "5f12e5ee-ddd4-48ab-a29b-c136ee997962",
            "studyLeaveWeekId": "00000000-0000-0000-0000-000000000000",
            "date": "0001-01-01T00:00:00"
          }
        },
        "additionalProperties": false,
        "properties": {
          "studyLeaveDate": {
            "$ref": "#/components/schemas/StudyLeaveDate"
          }
        }
      },
      "PostStudyLeaveDate_Request": {
        "type": "object",
        "example": {
          "studyLeaveDate": {
            "studyLeaveDateId": "6783a6bb-30dc-42c8-b1dd-e4f5a4a62a92",
            "studyLeaveWeekId": "00000000-0000-0000-0000-000000000000",
            "date": "0001-01-01T00:00:00"
          }
        },
        "additionalProperties": false,
        "properties": {
          "studyLeaveDate": {
            "$ref": "#/components/schemas/StudyLeaveDate"
          }
        }
      },
      "PatchStudyLeaveSubmission_Request": {
        "type": "object",
        "example": {
          "studyLeaveSubmission": {
            "studyLeaveSubmissionId": "b856aa2e-0b21-488d-9176-3c68087a0d73",
            "studyLeaveDateId": "7d0a25b2-ae6f-4f84-aa76-d0e0d30fee4b",
            "studentUpi": "3a24988b-8a37-4055-ad1a-82d075a3565b",
            "submittedByUpi": "00000000-0000-0000-0000-000000000000",
            "submitted": "0001-01-01T00:00:00",
            "studyLeaveSubmissionPeriods": []
          }
        },
        "additionalProperties": false,
        "properties": {
          "studyLeaveSubmission": {
            "$ref": "#/components/schemas/StudyLeaveSubmission"
          }
        }
      },
      "StudyLeaveSubmission": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeaveSubmissionId": {
            "type": "string",
            "format": "guid"
          },
          "studyLeaveDateId": {
            "type": "string",
            "format": "guid"
          },
          "studyLeaveDate": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StudyLeaveDate"
              }
            ]
          },
          "studentUpi": {
            "type": "string",
            "format": "guid"
          },
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Student"
              }
            ]
          },
          "submittedByUpi": {
            "type": "string",
            "format": "guid"
          },
          "submitted": {
            "type": "string",
            "format": "date-time"
          },
          "studyLeaveSubmissionPeriods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeaveSubmissionPeriod"
            }
          }
        }
      },
      "StudyLeaveSubmissionPeriod": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeaveSubmissionPeriodId": {
            "type": "string",
            "format": "guid"
          },
          "studyLeavePeriodId": {
            "type": "string",
            "format": "guid"
          },
          "studyLeaveOptionId": {
            "type": "string",
            "format": "guid"
          },
          "studyLeaveSubmissionId": {
            "type": "string",
            "format": "guid"
          },
          "studyLeavePeriod": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StudyLeavePeriod"
              }
            ]
          },
          "studyLeaveOption": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StudyLeaveOption"
              }
            ]
          },
          "value": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          }
        }
      },
      "PostStudyLeaveSubmission_Request": {
        "type": "object",
        "example": {
          "studyLeaveSubmission": {
            "studyLeaveSubmissionId": "ec3071dd-18a7-41c7-ae38-5d3a6f8e5b3d",
            "studyLeaveDateId": "db9685a4-e112-4901-91f0-b383a742e570",
            "studentUpi": "c9da59f2-c2c8-48dc-9052-7563f7bddaa2",
            "submittedByUpi": "00000000-0000-0000-0000-000000000000",
            "submitted": "0001-01-01T00:00:00",
            "studyLeaveSubmissionPeriods": []
          }
        },
        "additionalProperties": false,
        "properties": {
          "studyLeaveSubmission": {
            "$ref": "#/components/schemas/StudyLeaveSubmission"
          }
        }
      },
      "DeleteStudyLeavePeriod_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetStudyLeavePeriods_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeavePeriods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeavePeriod"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetStudyLeavePeriods_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchStudyLeavePeriod_Request": {
        "type": "object",
        "example": {
          "studyLeavePeriod": {
            "studyLeavePeriodId": "4f440abb-322d-40af-b47d-473ba68fe491",
            "studyLeavePeriodGroupId": "00000000-0000-0000-0000-000000000000",
            "name": "Updated Period",
            "hasSubmissions": false,
            "syncToWeekendLeave": false,
            "studyLeavePeriodAccess": []
          }
        },
        "additionalProperties": false,
        "properties": {
          "studyLeavePeriod": {
            "$ref": "#/components/schemas/StudyLeavePeriod"
          }
        }
      },
      "PostStudyLeavePeriod_Request": {
        "type": "object",
        "example": {
          "studyLeavePeriod": {
            "studyLeavePeriodId": "bc5446ac-546b-47e2-b973-d8e3ba43c7f9",
            "studyLeavePeriodGroupId": "00000000-0000-0000-0000-000000000000",
            "name": "Example Period",
            "hasSubmissions": false,
            "syncToWeekendLeave": false,
            "studyLeavePeriodAccess": []
          }
        },
        "additionalProperties": false,
        "properties": {
          "studyLeavePeriod": {
            "$ref": "#/components/schemas/StudyLeavePeriod"
          }
        }
      },
      "GetStudyLeavePeriodGroups_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeavePeriodGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeavePeriodGroup"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetStudyLeavePeriodGroups_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchStudyLeavePeriodGroup_Request": {
        "type": "object",
        "example": {
          "studyLeavePeriodGroup": {
            "studyLeavePeriodGroupId": "431a0208-4f39-42b2-b502-46a9cd6865d1",
            "name": "Updated Period Group",
            "active": true,
            "studyLeavePeriods": []
          }
        },
        "additionalProperties": false,
        "properties": {
          "studyLeavePeriodGroup": {
            "$ref": "#/components/schemas/StudyLeavePeriodGroup"
          }
        }
      },
      "PostStudyLeavePeriodGroup_Request": {
        "type": "object",
        "example": {
          "studyLeavePeriodGroup": {
            "studyLeavePeriodGroupId": "7eb19394-9bc4-4083-b823-766609de3761",
            "name": "Example Period Group",
            "active": true,
            "studyLeavePeriods": []
          }
        },
        "additionalProperties": false,
        "properties": {
          "studyLeavePeriodGroup": {
            "$ref": "#/components/schemas/StudyLeavePeriodGroup"
          }
        }
      },
      "DeleteStudyLeavePeriodAccess_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetStudyLeavePeriodAccess_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeavePeriodAccess": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeavePeriodAccess"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetStudyLeavePeriodAccess_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchStudyLeavePeriodAccess_Request": {
        "type": "object",
        "example": {
          "studyLeavePeriodAccess": {
            "studyLeavePeriodAccessId": "f8af722a-9224-4dcf-8b7c-a92f085ab70e",
            "studyLeavePeriodId": "00000000-0000-0000-0000-000000000000"
          }
        },
        "additionalProperties": false,
        "properties": {
          "studyLeavePeriodAccess": {
            "$ref": "#/components/schemas/StudyLeavePeriodAccess"
          }
        }
      },
      "PostStudyLeavePeriodAccess_Request": {
        "type": "object",
        "example": {
          "studyLeavePeriodAccess": {
            "studyLeavePeriodAccessId": "7243c3c5-02fb-42f1-9cd4-8747b53b34f0",
            "studyLeavePeriodId": "00000000-0000-0000-0000-000000000000"
          }
        },
        "additionalProperties": false,
        "properties": {
          "studyLeavePeriodAccess": {
            "$ref": "#/components/schemas/StudyLeavePeriodAccess"
          }
        }
      },
      "GetStudyLeaveOptions_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeaveOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeaveOption"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetStudyLeaveOptions_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchStudyLeaveOption_Request": {
        "type": "object",
        "example": {
          "studyLeaveOption": {
            "studyLeaveOptionId": "c8273f0c-fd16-4c41-8d77-a8f756f7d5d4",
            "studyLeaveOptionGroupId": "56e1cdf2-bac5-4164-95b0-18392554f9d1",
            "name": "Example Option",
            "code": "Example Code",
            "studyLeaveOptionAccess": []
          }
        },
        "additionalProperties": false,
        "properties": {
          "studyLeaveOption": {
            "$ref": "#/components/schemas/StudyLeaveOption"
          }
        }
      },
      "PostStudyLeaveOption_Request": {
        "type": "object",
        "example": {
          "studyLeaveOption": {
            "studyLeaveOptionId": "eeb9c302-916d-4684-a20e-0c163108ae75",
            "studyLeaveOptionGroupId": "f798eaed-6cbf-476a-a037-80b2812b59f8",
            "name": "Example Option",
            "code": "Example Code",
            "studyLeaveOptionAccess": []
          }
        },
        "additionalProperties": false,
        "properties": {
          "studyLeaveOption": {
            "$ref": "#/components/schemas/StudyLeaveOption"
          }
        }
      },
      "GetStudyLeaveOptionGroups_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeaveOptionGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeaveOptionGroup"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetStudyLeaveOptionGroups_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchStudyLeaveOptionGroup_Request": {
        "type": "object",
        "example": {
          "studyLeaveOptionGroup": {
            "studyLeaveOptionGroupId": "c7724a5d-1719-4752-b1e6-cdc6267ece79",
            "name": "Example Group",
            "active": false,
            "studyLeaveOptions": []
          }
        },
        "additionalProperties": false,
        "properties": {
          "studyLeaveOptionGroup": {
            "$ref": "#/components/schemas/StudyLeaveOptionGroup"
          }
        }
      },
      "PostStudyLeaveOptionGroup_Request": {
        "type": "object",
        "example": {
          "studyLeaveOptionGroup": {
            "studyLeaveOptionGroupId": "96c6d45b-846b-4cf6-b8e1-822af027483e",
            "name": "Example Group",
            "active": false,
            "studyLeaveOptions": []
          }
        },
        "additionalProperties": false,
        "properties": {
          "studyLeaveOptionGroup": {
            "$ref": "#/components/schemas/StudyLeaveOptionGroup"
          }
        }
      },
      "DeleteStudyLeaveOptionAccess_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetStudyLeaveOptionAccess_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeaveOptionAccess": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeaveOptionAccess"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetStudyLeaveOptionAccess_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchStudyLeaveOptionAccess_Request": {
        "type": "object",
        "example": {
          "studyLeaveOptionAccess": {
            "studyLeaveOptionAccessId": "c7fcdd5c-7d59-43e0-81f3-d6c5f1ee3c7b",
            "studyLeaveOptionId": "65fbebd2-8b86-47ad-a50c-7c76336eb047"
          }
        },
        "additionalProperties": false,
        "properties": {
          "studyLeaveOptionAccess": {
            "$ref": "#/components/schemas/StudyLeaveOptionAccess"
          }
        }
      },
      "PostStudyLeaveOptionAccess_Request": {
        "type": "object",
        "example": {
          "studyLeaveOptionAccess": {
            "studyLeaveOptionAccessId": "61ccfc98-e25d-4115-8b10-97a24f6fba05",
            "studyLeaveOptionId": "a2fcff23-3fc0-4950-8ac0-e63467415bcc"
          }
        },
        "additionalProperties": false,
        "properties": {
          "studyLeaveOptionAccess": {
            "$ref": "#/components/schemas/StudyLeaveOptionAccess"
          }
        }
      },
      "GetStudyLeaveHouseForms_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeaveSubmissions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeaveSubmission"
            }
          },
          "studentsWithoutSubmissions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Student"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetStudyLeaveHouseForms_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetStudyLeaveHouseReminders_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeaveReminders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeaveReminder"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetStudyLeaveHouseReminders_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostStudyLeaveHouseReminders_Request": {
        "type": "object",
        "example": {
          "students": [],
          "houseId": "a410d3f0-0e70-4ad6-8e2a-2064cec9719e",
          "studyLeaveWeekId": "1eefdc4a-8f16-401b-bf27-56e1a32cdb5e"
        },
        "additionalProperties": false,
        "properties": {
          "students": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Student"
            }
          },
          "houseId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "studyLeaveWeekId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          }
        }
      },
      "GetStudyLeaveFormDetails_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studyLeaveOptionGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeaveOptionGroup"
            }
          },
          "studyLeavePeriodGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeavePeriodGroup"
            }
          },
          "studyLeaveWeeks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeaveWeek"
            }
          },
          "studyLeaveSubmissions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudyLeaveSubmission"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetStudyLeaveFormDetails_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetStudentNumber_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "phoneNumber": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetStudents_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "students": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Student"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetStudents_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchStudentNumber_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "phoneNumber": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ImportCandidateNumbers_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studentsUpdated": {
            "type": "integer",
            "format": "int32"
          },
          "pupilsUpdated": {
            "type": "integer",
            "format": "int32"
          },
          "unmatchedMisIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ImportCandidateNumbers_Request": {
        "type": "object",
        "example": {
          "items": [
            {
              "misId": "12345",
              "candidateNumber": 6001
            }
          ]
        },
        "additionalProperties": false,
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ImportCandidateNumbers_Request_Row"
            }
          }
        }
      },
      "ImportCandidateNumbers_Request_Row": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "misId": {
            "type": "string",
            "nullable": true
          },
          "candidateNumber": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "GetStaffMember_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "staffMember": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StaffMember"
              }
            ]
          },
          "microsoftUser": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MicrosoftUser"
              }
            ]
          },
          "leaveRequests": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/LeaveRequest"
            }
          },
          "lineManager": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MicrosoftUser"
              }
            ]
          },
          "directReports": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MicrosoftUser"
            }
          },
          "classes": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Class"
            }
          },
          "parentContact": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Contact"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "LeaveRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "sDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "eDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "leaveType": {
            "type": "string"
          },
          "numOfDays": {
            "type": "number",
            "format": "double"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string"
          },
          "managerEmail": {
            "type": "string"
          },
          "employeeEmail": {
            "type": "string"
          },
          "employeeName": {
            "type": "string"
          },
          "department": {
            "type": "string"
          },
          "msEvent": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetStaffMember_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetStaffMembers_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "staffMembers": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/StaffMember"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetStaffMembers_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "DepartmentsResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "departments": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "AssigneesResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "assignees": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssigneeDto"
            }
          }
        }
      },
      "AssigneeDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ref": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "TicketCategoriesResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "categories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TicketCategoryDto"
            }
          }
        }
      },
      "TicketCategoryDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "category": {
            "type": "string"
          },
          "subCategories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CountriesResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "countries": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "IsamsCountriesRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "ExistingStaffResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "matches": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExistingStaffCheck_Match"
            }
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ExistingStaffCheck_Match": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "jobTitle": {
            "type": "string",
            "nullable": true
          },
          "school": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ExistingStaffQuery": {
        "type": "object",
        "additionalProperties": false
      },
      "LifecycleRequestListResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LifecycleRequestSummaryDto"
            }
          },
          "departmentItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LifecycleRequestSummaryDto"
            }
          },
          "allItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LifecycleRequestSummaryDto"
            }
          },
          "department": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "LifecycleRequestSummaryDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "userLocation": {
            "type": "string",
            "nullable": true
          },
          "submitterEmail": {
            "type": "string",
            "nullable": true
          },
          "submitterDisplayName": {
            "type": "string",
            "nullable": true
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "submitted": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "anchorDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "stepsTotal": {
            "type": "integer",
            "format": "int32"
          },
          "stepsDone": {
            "type": "integer",
            "format": "int32"
          },
          "stepsFailed": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetRequestsQuery": {
        "type": "object",
        "additionalProperties": false
      },
      "LifecycleRequestDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "userLocation": {
            "type": "string",
            "nullable": true
          },
          "submitterEmail": {
            "type": "string",
            "nullable": true
          },
          "configVersion": {
            "type": "integer",
            "format": "int32"
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "submitted": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "completed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "employeeFullName": {
            "type": "string",
            "nullable": true
          },
          "forename": {
            "type": "string",
            "nullable": true
          },
          "middleNames": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "middleInitial": {
            "type": "string",
            "nullable": true
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "employeeCode": {
            "type": "string",
            "nullable": true
          },
          "jobTitle": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "lineManagerEmail": {
            "type": "string",
            "nullable": true
          },
          "similarRoleEmail": {
            "type": "string",
            "nullable": true
          },
          "replacingOrNew": {
            "type": "string",
            "nullable": true
          },
          "joiningDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "exitDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "departmentalDivision": {
            "type": "string",
            "nullable": true
          },
          "personalEmail": {
            "type": "string",
            "nullable": true
          },
          "personalMobileNumber": {
            "type": "string",
            "nullable": true
          },
          "personalTelephoneNumber": {
            "type": "string",
            "nullable": true
          },
          "personalAddress1": {
            "type": "string",
            "nullable": true
          },
          "personalAddress2": {
            "type": "string",
            "nullable": true
          },
          "personalAddress3": {
            "type": "string",
            "nullable": true
          },
          "personalTown": {
            "type": "string",
            "nullable": true
          },
          "personalCounty": {
            "type": "string",
            "nullable": true
          },
          "personalPostcode": {
            "type": "string",
            "nullable": true
          },
          "personalCountry": {
            "type": "string",
            "nullable": true
          },
          "emailAccessType": {
            "type": "string",
            "nullable": true
          },
          "requireFirefly": {
            "type": "boolean",
            "nullable": true
          },
          "requireSocs": {
            "type": "boolean",
            "nullable": true
          },
          "budgetHolder": {
            "type": "boolean",
            "nullable": true
          },
          "previouslyEmployed": {
            "type": "boolean",
            "nullable": true
          },
          "emailSignature": {
            "type": "string",
            "nullable": true
          },
          "laptopRequired": {
            "type": "string",
            "nullable": true
          },
          "directTelephoneRequired": {
            "type": "boolean",
            "nullable": true
          },
          "mobilePhoneRequired": {
            "type": "boolean",
            "nullable": true
          },
          "deskSetupRequired": {
            "type": "string",
            "nullable": true
          },
          "doorAccessRequired": {
            "type": "boolean",
            "nullable": true
          },
          "doorAccessLevel": {
            "type": "string",
            "nullable": true
          },
          "houseTutor": {
            "type": "string",
            "nullable": true
          },
          "additionalInfo": {
            "type": "string",
            "nullable": true
          },
          "targetStaffUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "targetStaffEmail": {
            "type": "string",
            "nullable": true
          },
          "targetDepartment": {
            "type": "string",
            "nullable": true
          },
          "lastWorkingDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "customValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomValueDto"
            }
          },
          "changeValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChangeValueDto"
            }
          },
          "provisioningActions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProvisioningActionDto"
            }
          }
        }
      },
      "CustomValueDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "customFieldDefId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "label": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ChangeValueDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "attribute": {
            "type": "string",
            "nullable": true
          },
          "previousValue": {
            "type": "string",
            "nullable": true
          },
          "newValue": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProvisioningActionDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "kind": {
            "type": "string",
            "nullable": true
          },
          "stepId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "externalRef": {
            "type": "string",
            "nullable": true
          },
          "scheduledFor": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "error": {
            "type": "string",
            "nullable": true
          },
          "attempts": {
            "type": "integer",
            "format": "int32"
          },
          "ticketStatus": {
            "type": "string",
            "nullable": true
          },
          "resolved": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "RequestByIdRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ByIdRequest"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "ByIdRequest": {
        "type": "object",
        "x-abstract": true,
        "additionalProperties": false
      },
      "SubmitRequestRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ByIdRequest"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "acknowledgeExistingStaff": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "WorkflowConfigDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "integer",
            "format": "int32"
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "string",
            "nullable": true
          },
          "steps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkflowStepDto"
            }
          },
          "fieldMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FieldMappingDto"
            }
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldDefDto"
            }
          },
          "requiredFields": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "WorkflowStepDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "stepKey": {
            "type": "string",
            "nullable": true
          },
          "order": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "actionType": {
            "type": "string",
            "nullable": true
          },
          "assigneeRef": {
            "type": "string",
            "nullable": true
          },
          "offsetDays": {
            "type": "integer",
            "format": "int32"
          },
          "condition": {
            "type": "string",
            "nullable": true
          },
          "subjectTemplate": {
            "type": "string",
            "nullable": true
          },
          "bodyTemplate": {
            "type": "string",
            "nullable": true
          },
          "ticketStatus": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "subCategory": {
            "type": "string",
            "nullable": true
          },
          "enabled": {
            "type": "boolean"
          },
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkflowStepTaskDto"
            }
          }
        }
      },
      "WorkflowStepTaskDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "order": {
            "type": "integer",
            "format": "int32"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "condition": {
            "type": "string",
            "nullable": true
          },
          "assigneeRef": {
            "type": "string",
            "nullable": true
          },
          "enabled": {
            "type": "boolean"
          }
        }
      },
      "FieldMappingDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "formField": {
            "type": "string",
            "nullable": true
          },
          "isamsTarget": {
            "type": "string",
            "nullable": true
          },
          "isCustomField": {
            "type": "boolean"
          },
          "populate": {
            "type": "boolean"
          },
          "staticValue": {
            "type": "string",
            "nullable": true
          },
          "source": {
            "type": "string",
            "nullable": true
          },
          "isamsCustomFieldIds": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "valueMap": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "CustomFieldDefDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "label": {
            "type": "string",
            "nullable": true
          },
          "fieldType": {
            "type": "string",
            "nullable": true
          },
          "required": {
            "type": "boolean"
          },
          "order": {
            "type": "integer",
            "format": "int32"
          },
          "choices": {
            "type": "string",
            "nullable": true
          },
          "section": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ConfigByTypeRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetUserCourseData_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "userCourse": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SkillsUserCourse"
              }
            ]
          },
          "bookmarkedCourse": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SkillsBookmarkedCourse"
              }
            ]
          },
          "assignedToMe": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SkillsAssignedCourse"
            }
          },
          "assignedByMe": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SkillsAssignedCourse"
            }
          }
        }
      },
      "SkillsUserCourse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "userEmail": {
            "type": "string",
            "nullable": true
          },
          "firstViewedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastViewedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "courseId": {
            "type": "string",
            "nullable": true
          },
          "courseImage": {
            "type": "string",
            "nullable": true
          },
          "courseTitle": {
            "type": "string",
            "nullable": true
          },
          "provider": {
            "type": "string",
            "nullable": true
          },
          "completed": {
            "type": "boolean",
            "nullable": true
          },
          "completedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "hidden": {
            "type": "boolean"
          }
        }
      },
      "SkillsBookmarkedCourse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "bookmarkedBy": {
            "type": "string",
            "nullable": true
          },
          "bookmarkedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "courseId": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SkillsAssignedCourse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "userCourseId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "assignedTo": {
            "type": "string",
            "nullable": true
          },
          "assignedByEmail": {
            "type": "string",
            "nullable": true
          },
          "assignedByName": {
            "type": "string",
            "nullable": true
          },
          "assignedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "deadline": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "userCourse": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SkillsUserCourse"
              }
            ]
          }
        }
      },
      "GetUserCourseData_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetUserCoursesByEmail_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "userCourses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SkillsUserCourse"
            }
          }
        }
      },
      "GetUserCoursesByEmail_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PutUserCourse_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "userEmail": {
            "type": "string",
            "nullable": true
          },
          "firstViewedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastViewedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "courseId": {
            "type": "string",
            "nullable": true
          },
          "courseImage": {
            "type": "string",
            "nullable": true
          },
          "courseTitle": {
            "type": "string",
            "nullable": true
          },
          "provider": {
            "type": "string",
            "nullable": true
          },
          "completed": {
            "type": "boolean"
          },
          "completedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "hidden": {
            "type": "boolean"
          }
        }
      },
      "GetCoursesBySearch_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "linkedInCourses": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/LinkedInCourse"
            }
          },
          "msLearnCourses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MSLearnCourse"
            }
          },
          "courses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TrainingCourse"
            }
          }
        }
      },
      "LinkedInCourse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "urn": {
            "type": "string",
            "nullable": true
          },
          "details": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Details"
              }
            ]
          },
          "title": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Title"
              }
            ]
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "contents": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Content"
            }
          }
        }
      },
      "Details": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "images": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Images"
              }
            ]
          },
          "descriptionIncludingHtml": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/DescriptionIncludingHtml"
              }
            ]
          },
          "lastUpdatedAt": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "publishedAt": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "level": {
            "type": "string",
            "nullable": true
          },
          "discoverableBy": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/DiscoverableBy"
            }
          },
          "description": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Description"
              }
            ]
          },
          "shortDescription": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ShortDescription"
              }
            ]
          },
          "availability": {
            "type": "string",
            "nullable": true
          },
          "availableLocales": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/AvailableLocale"
            }
          },
          "relationships": {
            "type": "array",
            "nullable": true,
            "items": {}
          },
          "classifications": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Classification"
            }
          },
          "urls": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Urls2"
              }
            ]
          },
          "shortDescriptionIncludingHtml": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ShortDescriptionIncludingHtml"
              }
            ]
          },
          "contributors": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Contributor"
            }
          },
          "timeToComplete": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/TimeToComplete"
              }
            ]
          }
        }
      },
      "Images": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "primary": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "DescriptionIncludingHtml": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "locale": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Locale"
              }
            ]
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Locale": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "country": {
            "type": "string",
            "nullable": true
          },
          "language": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "DiscoverableBy": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "accessor": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Accessor"
              }
            ]
          }
        }
      },
      "Accessor": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Name"
              }
            ]
          },
          "urn": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Name": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "locale": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Locale"
              }
            ]
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Description": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "locale": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Locale"
              }
            ]
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ShortDescription": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "locale": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Locale"
              }
            ]
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "AvailableLocale": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "country": {
            "type": "string",
            "nullable": true
          },
          "language": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Classification": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "assigner": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Assigner"
              }
            ]
          },
          "path": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Path"
            }
          },
          "associatedClassification": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AssociatedClassification"
              }
            ]
          }
        }
      },
      "Assigner": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "urn": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Name"
              }
            ]
          }
        }
      },
      "Path": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "owner": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Owner"
              }
            ]
          },
          "name": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Name"
              }
            ]
          },
          "urn": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Owner": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "urn": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Name"
              }
            ]
          }
        }
      },
      "AssociatedClassification": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "owner": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Owner"
              }
            ]
          },
          "name": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Name"
              }
            ]
          },
          "urn": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Urls2": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ssoLaunch": {
            "type": "string",
            "nullable": true
          },
          "webLaunch": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ShortDescriptionIncludingHtml": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "locale": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Locale"
              }
            ]
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Contributor": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Name"
              }
            ]
          },
          "urn": {
            "type": "string",
            "nullable": true
          },
          "contributionType": {
            "type": "string",
            "nullable": true
          },
          "authorDetails": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AuthorDetails"
              }
            ]
          }
        }
      },
      "AuthorDetails": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "lastName": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LastName"
              }
            ]
          },
          "firstName": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/FirstName"
              }
            ]
          }
        }
      },
      "LastName": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "locale": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Locale"
              }
            ]
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "FirstName": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "locale": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Locale"
              }
            ]
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "TimeToComplete": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "duration": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "unit": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Title": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "locale": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Locale"
              }
            ]
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Content": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "asset": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Asset"
              }
            ]
          }
        }
      },
      "Asset": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "urn": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Title"
              }
            ]
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "contents": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Content"
            }
          }
        }
      },
      "MSLearnCourse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "summary": {
            "type": "string",
            "nullable": true
          },
          "levels": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "roles": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "products": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "uid": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "duration_in_minutes": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "rating": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Rating"
              }
            ]
          },
          "popularity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "icon_url": {
            "type": "string",
            "nullable": true
          },
          "social_image_url": {
            "type": "string",
            "nullable": true
          },
          "locale": {
            "type": "string",
            "nullable": true
          },
          "last_modified": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "firstUnitUrl": {
            "type": "string",
            "nullable": true
          },
          "units": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "number_of_children": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "Rating": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "count": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "average": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        }
      },
      "TrainingCourse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "providerEnum": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CourseProvider"
              }
            ]
          },
          "uid": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "image": {
            "type": "string",
            "nullable": true
          },
          "secondaryImage": {
            "type": "string",
            "nullable": true
          },
          "link": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "level": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "duration": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "CourseProvider": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "LinkedIn",
          "MsLearn"
        ],
        "enum": [
          0,
          1
        ]
      },
      "GetCoursesBySearch_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetLinkedInCourseById_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "course": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LinkedInCourse"
              }
            ]
          }
        }
      },
      "GetLinkedInCourseById_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetLinkedInCoursesBySearch_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "courses": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/LinkedInCourse"
            }
          }
        }
      },
      "GetLinkedInCoursesBySearch_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetMSLearnCourseById_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "course": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MSLearnCourse"
              }
            ]
          }
        }
      },
      "GetMSLearnCourseById_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetMsLearnCoursesBySearch_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "courses": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MSLearnCourse"
            }
          }
        }
      },
      "GetMsLearnCoursesBySearch_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "DeleteBookmarkedCourse_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetBookmarkedCoursesByEmail_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "bookmarkedCourses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SkillsBookmarkedCourse"
            }
          }
        }
      },
      "GetBookmarkedCoursesByEmail_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostBookmarkedCourse_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "courseId": {
            "type": "string",
            "nullable": true
          },
          "bookmarkedBy": {
            "type": "string",
            "nullable": true
          },
          "bookmarkedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "PostBookmarkedCourse_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "courseId": {
            "type": "string",
            "nullable": true
          },
          "bookmarkedBy": {
            "type": "string",
            "nullable": true
          },
          "bookmarkedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "DeleteAssignedCourse_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetAssignedCoursesByEmail_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "assignedCourses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SkillsAssignedCourse"
            }
          }
        }
      },
      "GetAssignedCoursesByEmail_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PutAssignedCourse_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "assignedCourses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SkillsAssignedCourse"
            }
          }
        }
      },
      "PutAssignedCourse_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "userCourseId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "assignedTo": {
            "type": "string",
            "nullable": true
          },
          "assignedByEmail": {
            "type": "string",
            "nullable": true
          },
          "assignedByName": {
            "type": "string",
            "nullable": true
          },
          "assignedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "deadline": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "userCourse": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SkillsUserCourse"
              }
            ]
          },
          "emails": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          }
        }
      },
      "GetSignageCalendar_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "days": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetSignageCalendar_CalendarDay"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetSignageCalendar_CalendarDay": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "isToday": {
            "type": "boolean"
          },
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetSignageCalendar_CalendarEvent"
            }
          }
        }
      },
      "GetSignageCalendar_CalendarEvent": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "subject": {
            "type": "string",
            "nullable": true
          },
          "start": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "end": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "isAllDay": {
            "type": "boolean"
          },
          "isCancelled": {
            "type": "boolean"
          },
          "location": {
            "type": "string",
            "nullable": true
          },
          "organiser": {
            "type": "string",
            "nullable": true
          },
          "attendees": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "GetSignageContext_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayKey": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "kind": {
            "type": "string",
            "nullable": true
          },
          "variant": {
            "type": "string",
            "nullable": true
          },
          "serverTimeUtc": {
            "type": "string",
            "format": "date-time"
          },
          "override": {
            "$ref": "#/components/schemas/GetSignageContext_OverrideEnvelope"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetSignageContext_OverrideEnvelope": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "bottom": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/GetSignageContext_OverrideView"
              }
            ]
          },
          "fullScreen": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/GetSignageContext_OverrideView"
              }
            ]
          }
        }
      },
      "GetSignageContext_OverrideView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "accentColour": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetSignageItTickets_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "serverTimeUtc": {
            "type": "string",
            "format": "date-time"
          },
          "unassigned": {
            "$ref": "#/components/schemas/GetSignageItTickets_AgentColumn"
          },
          "agents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetSignageItTickets_AgentColumn"
            }
          },
          "calendar": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetSignageItTickets_CalendarEntry"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetSignageItTickets_AgentColumn": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "overdue": {
            "type": "integer",
            "format": "int32"
          },
          "tickets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetSignageItTickets_TicketView"
            }
          }
        }
      },
      "GetSignageItTickets_TicketView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "type": "string"
          },
          "createdUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "dueBy": {
            "type": "string",
            "nullable": true
          },
          "overdue": {
            "type": "boolean"
          },
          "workspaceId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "workspaceName": {
            "type": "string",
            "nullable": true
          },
          "foreign": {
            "type": "boolean"
          }
        }
      },
      "GetSignageItTickets_CalendarEntry": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "subject": {
            "type": "string",
            "nullable": true
          },
          "start": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "end": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "isAllDay": {
            "type": "boolean"
          },
          "isCancelled": {
            "type": "boolean"
          },
          "location": {
            "type": "string",
            "nullable": true
          },
          "organiser": {
            "type": "string",
            "nullable": true
          },
          "attendees": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "GetSignageScience_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "science": {
            "$ref": "#/components/schemas/ScienceDisplay"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ScienceDisplay": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "B1": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "B2": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "B3": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "B4": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "B5": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "B6": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "B7": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "BText": {
            "$ref": "#/components/schemas/Text"
          },
          "C1": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "C2": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "C3": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "C4": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "C5": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "C6": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "C7": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "CLib": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "CText": {
            "$ref": "#/components/schemas/Text"
          },
          "P1": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "P2": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "P3": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "P4": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "P5": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "P6": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "P7": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          },
          "PText": {
            "$ref": "#/components/schemas/Text"
          },
          "Project": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails"
              }
            ]
          }
        }
      },
      "PeriodDetails": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Period1": {
            "type": "string",
            "nullable": true
          },
          "Period2": {
            "type": "string",
            "nullable": true
          },
          "Period3": {
            "type": "string",
            "nullable": true
          },
          "Period4": {
            "type": "string",
            "nullable": true
          },
          "Period5": {
            "type": "string",
            "nullable": true
          },
          "Period6": {
            "type": "string",
            "nullable": true
          },
          "Period7": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Text": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Text": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "DeleteSignageOverrideRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetSignageDisplays_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displays": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetSignageDisplays_DisplayItem"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetSignageDisplays_DisplayItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayId": {
            "type": "string",
            "format": "guid"
          },
          "key": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "kind": {
            "type": "string",
            "nullable": true
          },
          "variant": {
            "type": "string",
            "nullable": true
          },
          "active": {
            "type": "boolean"
          },
          "credentials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetSignageDisplays_CredentialItem"
            }
          }
        }
      },
      "GetSignageDisplays_CredentialItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "clientId": {
            "type": "string",
            "nullable": true
          },
          "credentialName": {
            "type": "string",
            "nullable": true
          },
          "active": {
            "type": "boolean"
          },
          "lastUsed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "GetSignageItAgents_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "agents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SignageItAgentDto"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "SignageItAgentDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "agentId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "freshserviceAgentId": {
            "type": "integer",
            "format": "int64"
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32"
          },
          "active": {
            "type": "boolean"
          }
        }
      },
      "GetSignageOverrides_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "overrides": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SignageOverrideDto"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "SignageOverrideDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "overrideId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "kind": {
            "type": "string",
            "nullable": true
          },
          "targetKey": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "accentColour": {
            "type": "string",
            "nullable": true
          },
          "active": {
            "type": "boolean"
          },
          "updatedUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "PostSignageDisplay_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "clientId": {
            "type": "string",
            "nullable": true
          },
          "clientSecret": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostSignageDisplay_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayKey": {
            "type": "string",
            "nullable": true
          },
          "credentialName": {
            "type": "string",
            "nullable": true
          },
          "tokenLifetimeSeconds": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PostSignageDisplaySecret_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "clientId": {
            "type": "string",
            "nullable": true
          },
          "clientSecret": {
            "type": "string",
            "nullable": true
          },
          "active": {
            "type": "boolean"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostSignageDisplaySecret_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "active": {
            "type": "boolean"
          }
        }
      },
      "PostSignageOverride_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "override": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SignageOverrideDto"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostSignageOverride_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "overrideId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "kind": {
            "type": "string",
            "nullable": true
          },
          "targetKey": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "accentColour": {
            "type": "string",
            "nullable": true
          },
          "active": {
            "type": "boolean"
          }
        }
      },
      "PostSignageScienceImport_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "daysImported": {
            "type": "integer",
            "format": "int32"
          },
          "roomsInserted": {
            "type": "integer",
            "format": "int32"
          },
          "textsInserted": {
            "type": "integer",
            "format": "int32"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PutSignageItAgents_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "agents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SignageItAgentDto"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PutSignageItAgents_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "agents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SignageItAgentDto"
            }
          }
        }
      },
      "GetShortLinks_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "shortLinks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShortLink"
            }
          },
          "departmentShortLinks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShortLink"
            }
          },
          "allShortLinks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShortLink"
            }
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ShortLink": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "backHalf": {
            "type": "string",
            "nullable": true
          },
          "redirectLink": {
            "type": "string",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "createdByDisplayName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetShortLinks_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetShortLinkStats_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "shortLinkId": {
            "type": "integer",
            "format": "int32"
          },
          "backHalf": {
            "type": "string",
            "nullable": true
          },
          "redirectLink": {
            "type": "string",
            "nullable": true
          },
          "totalClicks": {
            "type": "integer",
            "format": "int32"
          },
          "botClicks": {
            "type": "integer",
            "format": "int32"
          },
          "firstClick": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastClick": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "byDay": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetShortLinkStats_ShortLinkDailyCount"
            }
          },
          "byCountry": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetShortLinkStats_ShortLinkPlaceCount"
            }
          },
          "byCity": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetShortLinkStats_ShortLinkPlaceCount"
            }
          },
          "byReferrer": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetShortLinkStats_ShortLinkPlaceCount"
            }
          },
          "recent": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetShortLinkStats_ShortLinkRecentClick"
            }
          }
        }
      },
      "GetShortLinkStats_ShortLinkDailyCount": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "day": {
            "type": "string",
            "format": "date-time"
          },
          "clicks": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetShortLinkStats_ShortLinkPlaceCount": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "clicks": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetShortLinkStats_ShortLinkRecentClick": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "clickedAt": {
            "type": "string",
            "format": "date-time"
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "referrer": {
            "type": "string",
            "nullable": true
          },
          "isBot": {
            "type": "boolean"
          }
        }
      },
      "GetShortLinkStats_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchShortLink_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "shortLink": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ShortLink"
              }
            ]
          }
        }
      },
      "PostShortLink_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "shortLink": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ShortLink"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostShortLink_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "link": {
            "type": "string",
            "nullable": true
          },
          "customBackHalf": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetServiceDeskOverview_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "isAgent": {
            "type": "boolean"
          },
          "agentId": {
            "type": "string",
            "nullable": true
          },
          "agentName": {
            "type": "string",
            "nullable": true
          },
          "totals": {
            "$ref": "#/components/schemas/GetServiceDeskOverview_Counts"
          },
          "startingSoon": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceDeskTicket"
            }
          },
          "needsAttention": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceDeskTicket"
            }
          },
          "stale": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceDeskTicket"
            }
          },
          "recentMentions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceDeskMention"
            }
          },
          "pinnedFilters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceDeskFilter"
            }
          },
          "warning": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetServiceDeskOverview_Counts": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "open": {
            "type": "integer",
            "format": "int32"
          },
          "pending": {
            "type": "integer",
            "format": "int32"
          },
          "scheduled": {
            "type": "integer",
            "format": "int32"
          },
          "overdue": {
            "type": "integer",
            "format": "int32"
          },
          "dueToday": {
            "type": "integer",
            "format": "int32"
          },
          "startingSoon": {
            "type": "integer",
            "format": "int32"
          },
          "stale": {
            "type": "integer",
            "format": "int32"
          },
          "unreadMentions": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ServiceDeskTicket": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "priorityId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "priority": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "subCategory": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "requesterId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "requesterName": {
            "type": "string",
            "nullable": true
          },
          "requesterEmail": {
            "type": "string",
            "nullable": true
          },
          "agentId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "agentName": {
            "type": "string",
            "nullable": true
          },
          "groupId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "createdUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "dueByUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "plannedStartUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "plannedEndUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "overdue": {
            "type": "boolean"
          },
          "startingSoon": {
            "type": "boolean"
          },
          "startMissed": {
            "type": "boolean"
          },
          "minutesUntilStart": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "stale": {
            "type": "boolean"
          },
          "daysSinceUpdate": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "workspaceId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "workspaceName": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "lifecycle": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ServiceDeskLifecycleLink"
              }
            ]
          }
        }
      },
      "ServiceDeskLifecycleLink": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "requestId": {
            "type": "integer",
            "format": "int32"
          },
          "requestType": {
            "type": "string",
            "nullable": true
          },
          "requestStatus": {
            "type": "string",
            "nullable": true
          },
          "personName": {
            "type": "string",
            "nullable": true
          },
          "personEmail": {
            "type": "string",
            "nullable": true
          },
          "jobTitle": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "lineManagerEmail": {
            "type": "string",
            "nullable": true
          },
          "keyDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "keyDateLabel": {
            "type": "string",
            "nullable": true
          },
          "submitterEmail": {
            "type": "string",
            "nullable": true
          },
          "submittedUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siblingTotal": {
            "type": "integer",
            "format": "int32"
          },
          "siblingDone": {
            "type": "integer",
            "format": "int32"
          },
          "siblings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceDeskLifecycleSibling"
            }
          }
        }
      },
      "ServiceDeskLifecycleSibling": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "ticketId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "done": {
            "type": "boolean"
          },
          "resolvedUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "error": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ServiceDeskMention": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "ticketId": {
            "type": "integer",
            "format": "int64"
          },
          "ticketSubject": {
            "type": "string",
            "nullable": true
          },
          "matchKind": {
            "type": "string",
            "nullable": true
          },
          "authorName": {
            "type": "string",
            "nullable": true
          },
          "snippet": {
            "type": "string",
            "nullable": true
          },
          "noteCreatedUtc": {
            "type": "string",
            "format": "date-time"
          },
          "read": {
            "type": "boolean"
          },
          "url": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ServiceDeskFilter": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "criteria": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TicketFilterCompiler_Criterion"
            }
          },
          "summary": {
            "type": "string",
            "nullable": true
          },
          "shared": {
            "type": "boolean"
          },
          "pinned": {
            "type": "boolean"
          },
          "displayOrder": {
            "type": "integer",
            "format": "int32"
          },
          "ownerEmail": {
            "type": "string",
            "nullable": true
          },
          "canEdit": {
            "type": "boolean"
          },
          "count": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "countCapped": {
            "type": "boolean"
          }
        }
      },
      "TicketFilterCompiler_Criterion": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "field": {
            "type": "string",
            "nullable": true
          },
          "operator": {
            "type": "string",
            "nullable": true
          },
          "values": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "GetServiceDeskOverview_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetServiceDeskStats_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "days": {
            "type": "integer",
            "format": "int32"
          },
          "everyone": {
            "type": "boolean"
          },
          "created": {
            "type": "integer",
            "format": "int32"
          },
          "resolved": {
            "type": "integer",
            "format": "int32"
          },
          "openNow": {
            "type": "integer",
            "format": "int32"
          },
          "overdueNow": {
            "type": "integer",
            "format": "int32"
          },
          "medianFirstResponseHours": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "medianResolutionHours": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "byStatus": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetServiceDeskStats_Bucket"
            }
          },
          "byPriority": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetServiceDeskStats_Bucket"
            }
          },
          "byCategory": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetServiceDeskStats_Bucket"
            }
          },
          "byAgent": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetServiceDeskStats_Bucket"
            }
          },
          "createdPerDay": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetServiceDeskStats_DayPoint"
            }
          },
          "warning": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetServiceDeskStats_Bucket": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "label": {
            "type": "string",
            "nullable": true
          },
          "count": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetServiceDeskStats_DayPoint": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "created": {
            "type": "integer",
            "format": "int32"
          },
          "resolved": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetServiceDeskStats_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetServiceDeskTicket_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ticket": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ServiceDeskTicket"
              }
            ]
          },
          "descriptionHtml": {
            "type": "string",
            "nullable": true
          },
          "conversations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetServiceDeskTicket_ConversationItem"
            }
          },
          "requesterHistory": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceDeskTicket"
            }
          },
          "requester": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/GetServiceDeskTicket_RequesterProfile"
              }
            ]
          },
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetServiceDeskTicket_TaskItem"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetServiceDeskTicket_ConversationItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "bodyHtml": {
            "type": "string",
            "nullable": true
          },
          "bodyText": {
            "type": "string",
            "nullable": true
          },
          "private": {
            "type": "boolean"
          },
          "incoming": {
            "type": "boolean"
          },
          "authorName": {
            "type": "string",
            "nullable": true
          },
          "createdUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "notifiedEmails": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "ccEmails": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetServiceDeskTicket_AttachmentItem"
            }
          }
        }
      },
      "GetServiceDeskTicket_AttachmentItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "size": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetServiceDeskTicket_RequesterProfile": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "jobTitle": {
            "type": "string",
            "nullable": true
          },
          "staffType": {
            "type": "string",
            "nullable": true
          },
          "school": {
            "type": "string",
            "nullable": true
          },
          "extension": {
            "type": "string",
            "nullable": true
          },
          "mobile": {
            "type": "string",
            "nullable": true
          },
          "recordKind": {
            "type": "string",
            "nullable": true
          },
          "recordId": {
            "type": "string",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "greetingName": {
            "type": "string",
            "nullable": true
          },
          "matchedStaffRecord": {
            "type": "boolean"
          }
        }
      },
      "GetServiceDeskTicket_TaskItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "open": {
            "type": "boolean"
          },
          "agentName": {
            "type": "string",
            "nullable": true
          },
          "dueByUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "GetServiceDeskTicket_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetServiceDeskTickets_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "tickets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceDeskTicket"
            }
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "hasMore": {
            "type": "boolean"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetServiceDeskTickets_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostServiceDeskMessage_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sent": {
            "type": "boolean"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostServiceDeskMessage_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ticketId": {
            "type": "integer",
            "format": "int64"
          },
          "kind": {
            "type": "string",
            "nullable": true
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "private": {
            "type": "boolean"
          },
          "emails": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "cannedResponseId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "subCategory": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PatchServiceDeskTicket_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ticket": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ServiceDeskTicket"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PatchServiceDeskTicket_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ticketId": {
            "type": "integer",
            "format": "int64"
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "priority": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "responderId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "groupId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "subCategory": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetServiceDeskReference_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "agents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetServiceDeskReference_Option"
            }
          },
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetServiceDeskReference_Option"
            }
          },
          "statuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetServiceDeskReference_Option"
            }
          },
          "priorities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetServiceDeskReference_Option"
            }
          },
          "categories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetServiceDeskReference_CategoryOption"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetServiceDeskReference_Option": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "groupIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "GetServiceDeskReference_CategoryOption": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "subCategories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "PostServiceDeskBulkTickets_Response": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ServiceDeskBulkResponse"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "ServiceDeskBulkResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceDeskBulkResult"
            }
          },
          "succeeded": {
            "type": "integer",
            "format": "int32"
          },
          "failed": {
            "type": "integer",
            "format": "int32"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ServiceDeskBulkResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ticketId": {
            "type": "integer",
            "format": "int64"
          },
          "ok": {
            "type": "boolean"
          },
          "error": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostServiceDeskBulkTickets_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ticketIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            }
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "priority": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "responderId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "groupId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "subCategory": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostServiceDeskBulkMessages_Response": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ServiceDeskBulkResponse"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "PostServiceDeskBulkMessages_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ticketIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            }
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "kind": {
            "type": "string",
            "nullable": true
          },
          "private": {
            "type": "boolean"
          },
          "cannedResponseId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "subCategory": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetServiceDeskCannedResponses_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "responses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceDeskCannedResponse"
            }
          },
          "placeholders": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ServiceDeskCannedResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "folder": {
            "type": "string",
            "nullable": true
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "shared": {
            "type": "boolean"
          },
          "usageCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastUsed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "ownerEmail": {
            "type": "string",
            "nullable": true
          },
          "canEdit": {
            "type": "boolean"
          },
          "source": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetServiceDeskCannedResponses_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostServiceDeskCannedResponse_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "cannedResponse": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ServiceDeskCannedResponse"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostServiceDeskCannedResponse_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "folder": {
            "type": "string",
            "nullable": true
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "shared": {
            "type": "boolean"
          }
        }
      },
      "DeleteServiceDeskCannedResponse_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "deleted": {
            "type": "boolean"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "DeleteServiceDeskCannedResponse_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetServiceDeskFilters_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceDeskFilter"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetServiceDeskFilters_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostServiceDeskFilter_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "filter": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ServiceDeskFilter"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostServiceDeskFilter_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "criteria": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TicketFilterCompiler_Criterion"
            }
          },
          "shared": {
            "type": "boolean"
          },
          "pinned": {
            "type": "boolean"
          },
          "displayOrder": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "DeleteServiceDeskFilter_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "deleted": {
            "type": "boolean"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "DeleteServiceDeskFilter_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetServiceDeskIdentity_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "isAgent": {
            "type": "boolean"
          },
          "agentId": {
            "type": "string",
            "nullable": true
          },
          "agentName": {
            "type": "string",
            "nullable": true
          },
          "resolvedFromLink": {
            "type": "boolean"
          },
          "hasLink": {
            "type": "boolean"
          },
          "linkSource": {
            "type": "string",
            "nullable": true
          },
          "rosterSize": {
            "type": "integer",
            "format": "int32"
          },
          "checkedAddresses": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "suggestedAgentId": {
            "type": "string",
            "nullable": true
          },
          "explanation": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostServiceDeskIdentity_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "isAgent": {
            "type": "boolean"
          },
          "agentId": {
            "type": "string",
            "nullable": true
          },
          "agentName": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostServiceDeskIdentity_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "agentId": {
            "type": "string",
            "nullable": true
          },
          "useSuggested": {
            "type": "boolean"
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "clear": {
            "type": "boolean"
          }
        }
      },
      "GetServiceDeskMentionDiagnostic_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ticketId": {
            "type": "integer",
            "format": "int64"
          },
          "yourAddresses": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "watermarkUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastRunUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "alreadyRecorded": {
            "type": "boolean"
          },
          "notes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetServiceDeskMentionDiagnostic_NoteView"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetServiceDeskMentionDiagnostic_NoteView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "conversationId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "createdUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "private": {
            "type": "boolean"
          },
          "incoming": {
            "type": "boolean"
          },
          "authorUserId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "notifiedAddresses": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "notifiesYou": {
            "type": "boolean"
          },
          "verdict": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetServiceDeskMentionDiagnostic_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostServiceDeskMentionRescan_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "watermarkUtc": {
            "type": "string",
            "format": "date-time"
          },
          "days": {
            "type": "integer",
            "format": "int32"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostServiceDeskMentionRescan_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "days": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "GetServiceDeskMentions_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mentions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceDeskMention"
            }
          },
          "unreadCount": {
            "type": "integer",
            "format": "int32"
          },
          "lastScanUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetServiceDeskMentions_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostServiceDeskMentionState_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "updated": {
            "type": "integer",
            "format": "int32"
          },
          "unreadCount": {
            "type": "integer",
            "format": "int32"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostServiceDeskMentionState_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "state": {
            "type": "string",
            "nullable": true
          },
          "all": {
            "type": "boolean"
          }
        }
      },
      "GetSendForSet_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "pupils": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Student"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostAdvancedSearch_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "students": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Student"
            }
          },
          "misStaff": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StaffMember"
            }
          },
          "microsoftStaff": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MicrosoftUser"
            }
          },
          "relationships": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContactRelationshipObject"
            }
          },
          "contacts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contact"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ContactRelationshipObject": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "relationship": {
            "$ref": "#/components/schemas/Relationship"
          },
          "contact": {
            "$ref": "#/components/schemas/Contact"
          }
        }
      },
      "PostAdvancedSearch_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StudentAdvancedSearchObject"
              }
            ]
          },
          "misStaff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MisStaffAdvancedSearchObject"
              }
            ]
          },
          "microsoftStaff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MicrosoftStaffAdvancedSearchObject"
              }
            ]
          },
          "contact": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ContactAdvancedSearchObject"
              }
            ]
          },
          "searchScope": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SearchScope"
              }
            ]
          }
        }
      },
      "StudentAdvancedSearchObject": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "years": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Year"
            }
          },
          "houses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/House"
            }
          },
          "classes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Class"
            }
          },
          "forms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Form"
            }
          },
          "previousSchools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OtherSchool"
            }
          },
          "includeContacts": {
            "type": "boolean"
          },
          "includeLeavers": {
            "type": "boolean"
          },
          "isOnSENDList": {
            "type": "boolean"
          },
          "isOnEALList": {
            "type": "boolean"
          },
          "hasAllergies": {
            "type": "boolean"
          },
          "hasMedicalConditions": {
            "type": "boolean"
          },
          "hasEpiPen": {
            "type": "boolean"
          },
          "hasInhaler": {
            "type": "boolean"
          },
          "overseas": {
            "type": "boolean"
          }
        }
      },
      "MisStaffAdvancedSearchObject": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "jobTitle": {
            "type": "string",
            "nullable": true
          },
          "timetableCode": {
            "type": "string",
            "nullable": true
          },
          "school": {
            "type": "string",
            "nullable": true
          },
          "houses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/House"
            }
          },
          "classes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Class"
            }
          },
          "forms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Form"
            }
          },
          "subjects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Subject"
            }
          }
        }
      },
      "MicrosoftStaffAdvancedSearchObject": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "jobTitle": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MicrosoftGroup"
            }
          }
        }
      },
      "MicrosoftGroup": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ContactAdvancedSearchObject": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "ranks": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "relationshipType": {
            "type": "string",
            "nullable": true
          },
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StudentAdvancedSearchObject"
              }
            ]
          }
        }
      },
      "SearchScope": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Students",
          "MicrosoftStaff",
          "MISStaff",
          "Parents"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "GetScienceDisplayDetails_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "scienceDisplay": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ScienceDisplay"
              }
            ]
          }
        }
      },
      "GetScienceDisplayDetails_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "date": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PutScienceDisplayDetails_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "scienceDisplay": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ScienceDisplay"
              }
            ]
          },
          "subject": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "DeleteSchoolTrip_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetSchoolTrips_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "schoolTrips": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SchoolTrip"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "SchoolTrip": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "tripName": {
            "type": "string",
            "nullable": true
          },
          "destination": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "cost": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "yearGroups": {
            "type": "string",
            "nullable": true
          },
          "maxPlaces": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "organiser": {
            "type": "string",
            "nullable": true
          },
          "initials": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "link": {
            "type": "string",
            "nullable": true
          },
          "refCode": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetSchoolTrips_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchSchoolTrip_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "schoolTrip": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SchoolTrip"
              }
            ]
          }
        }
      },
      "PostSchoolTrip_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "schoolTrip": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SchoolTrip"
              }
            ]
          }
        }
      },
      "GetSchoolPostPublications_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "publications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SchoolPostPublication"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "SchoolPostPublication": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "pubId": {
            "type": "integer",
            "format": "int32"
          },
          "pubType": {
            "type": "string",
            "nullable": true
          },
          "publishDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "htmlIntro": {
            "type": "string",
            "nullable": true
          },
          "textIntro": {
            "type": "string",
            "nullable": true
          },
          "plainContent": {
            "type": "string",
            "nullable": true
          },
          "htmlContent": {
            "type": "string",
            "nullable": true
          },
          "isImportant": {
            "type": "boolean"
          },
          "isSecure": {
            "type": "boolean"
          },
          "isConfidential": {
            "type": "boolean"
          },
          "isPublic": {
            "type": "boolean"
          },
          "documents": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/SchoolPostDocument"
            }
          },
          "students": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/SchoolPostStudent"
            }
          },
          "from": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SchoolPostForm"
              }
            ]
          },
          "viewLog": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SchoolPostLog"
              }
            ]
          },
          "responseLog": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SchoolPostLog"
              }
            ]
          },
          "responseType": {
            "type": "string",
            "nullable": true
          },
          "responseEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "relatedId": {
            "type": "integer",
            "format": "int32"
          },
          "relatedMessage": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SchoolPostRelatedMessage"
              }
            ]
          },
          "url": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SchoolPostDocument": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "docId": {
            "type": "integer",
            "format": "int32"
          },
          "fileName": {
            "type": "string",
            "nullable": true
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "contentType": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SchoolPostStudent": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "accountId": {
            "type": "integer",
            "format": "int32"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "documents": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/SchoolPostDocument"
            }
          },
          "hRef": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SchoolPostForm": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "accountId": {
            "type": "integer",
            "format": "int32"
          },
          "misId": {
            "type": "string",
            "nullable": true
          },
          "ffId": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "customCode": {
            "type": "string",
            "nullable": true
          },
          "legalFirstName": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "accountTypes": {
            "type": "string",
            "nullable": true
          },
          "accountRoles": {
            "type": "string",
            "nullable": true
          },
          "roles": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "hRef": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SchoolPostLog": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "logged": {
            "type": "boolean"
          },
          "logDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "SchoolPostRelatedMessage": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "pubId": {
            "type": "integer",
            "format": "int32"
          },
          "pubType": {
            "type": "string",
            "nullable": true
          },
          "publishDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetSchoolPostPublications_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "DeleteSavedQuery_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetSavedQueries_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "savedQueries": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/SavedQuery"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "SavedQuery": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "scope": {
            "type": "string",
            "nullable": true
          },
          "filtersJson": {
            "type": "string",
            "nullable": true
          },
          "ownerEmail": {
            "type": "string",
            "nullable": true
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "GetSavedQueries_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchSavedQuery_Request": {
        "example": {},
        "allOf": [
          {
            "$ref": "#/components/schemas/SavedQuery"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "PostSavedQuery_Request": {
        "example": {},
        "allOf": [
          {
            "$ref": "#/components/schemas/SavedQuery"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "GetStudentSanctions_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sanctions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SanctionDto"
            }
          }
        }
      },
      "SanctionDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SanctionStudentDto"
              }
            ]
          },
          "yearAtTimeOfSanction": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "staffMember": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SanctionStaffDto"
              }
            ]
          },
          "sanctionType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SanctionTypeDto"
              }
            ]
          },
          "subject": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SanctionSubjectDto"
              }
            ]
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "studentNotified": {
            "type": "boolean"
          },
          "sanctionDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "submitted": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "attendanceCertified": {
            "type": "boolean"
          },
          "comments": {
            "type": "string",
            "nullable": true
          },
          "houseCode": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SanctionStudentDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "nameId": {
            "type": "integer",
            "format": "int32"
          },
          "studentUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "pupilId": {
            "type": "integer",
            "format": "int32"
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "house": {
            "type": "string",
            "nullable": true
          },
          "seniorHouse": {
            "type": "string",
            "nullable": true
          },
          "form": {
            "type": "string",
            "nullable": true
          },
          "emailAddress": {
            "type": "string",
            "nullable": true
          },
          "boarder": {
            "type": "boolean"
          },
          "leaver": {
            "type": "boolean"
          }
        }
      },
      "SanctionStaffDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "nameId": {
            "type": "integer",
            "format": "int32"
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SanctionTypeDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "order": {
            "type": "integer",
            "format": "int32"
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "cc": {
            "type": "string",
            "nullable": true
          },
          "messageBody": {
            "type": "string",
            "nullable": true
          },
          "messageSubject": {
            "type": "string",
            "nullable": true
          },
          "startTime": {
            "type": "string",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "nullable": true
          },
          "schoolSanction": {
            "type": "boolean"
          },
          "houseSanction": {
            "type": "boolean"
          },
          "boarderSanction": {
            "type": "boolean"
          },
          "daySanction": {
            "type": "boolean"
          },
          "createPermission": {
            "type": "boolean"
          },
          "editPermissions": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "SanctionSubjectDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "subjectId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "tutor": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "schoolReportPosition": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "GetStudentSanctions_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetStudentSanctionsSummary_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "summary": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SanctionSummaryDto"
            }
          }
        }
      },
      "SanctionSummaryDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "year": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "form": {
            "type": "string",
            "nullable": true
          },
          "numberOfSanctions": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "GetStudentSanctionsSummary_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "DeleteSanctions_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sanctionIds": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "integer",
              "format": "int32"
            }
          }
        }
      },
      "PatchSanctions_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "forms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SanctionDto"
            }
          }
        }
      },
      "PostSanctionNotification_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sanctionType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SanctionTypeDto"
              }
            ]
          },
          "forms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SanctionDto"
            }
          },
          "location": {
            "type": "string",
            "nullable": true
          },
          "staffMember": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SanctionStaffDto"
              }
            ]
          },
          "dateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "messageBody": {
            "type": "string",
            "nullable": true
          },
          "messageSubject": {
            "type": "string",
            "nullable": true
          },
          "durationHours": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        }
      },
      "PostSanctions_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          }
        }
      },
      "PostSanctions_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "forms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SanctionDto"
            }
          }
        }
      },
      "GetHouse_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "house": {
            "$ref": "#/components/schemas/HouseDto"
          }
        }
      },
      "HouseDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "inUseString": {
            "type": "string",
            "nullable": true
          },
          "academicType": {
            "type": "string",
            "nullable": true
          },
          "location": {
            "type": "string",
            "nullable": true
          },
          "addressId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "telephone": {
            "type": "string",
            "nullable": true
          },
          "housemaster": {
            "type": "string",
            "nullable": true
          },
          "housemasterTelephone": {
            "type": "string",
            "nullable": true
          },
          "matron": {
            "type": "string",
            "nullable": true
          },
          "matronTelephone": {
            "type": "string",
            "nullable": true
          },
          "order": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "GetSanctionTypes_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sanctionTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SanctionTypeDto"
            }
          }
        }
      },
      "GetSanctionUser_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "permissionNameDisplayName": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            }
          },
          "userSanctionTypes": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/SanctionTypeDto"
            }
          },
          "creationPageListLoadFlags": {
            "type": "integer",
            "format": "int32"
          },
          "filterListLoadFlags": {
            "type": "integer",
            "format": "int32"
          },
          "adminPermissionFlags": {
            "type": "integer",
            "format": "int32"
          },
          "createSanctionTypes": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/SanctionTypeDto"
            }
          },
          "createSubjects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SanctionSubjectDto"
            }
          },
          "createHouses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HouseDto"
            }
          },
          "filterSanctionTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SanctionTypeDto"
            }
          },
          "filterSubjects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SanctionSubjectDto"
            }
          },
          "userHouses": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/HouseDto"
            }
          },
          "userSubjects": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/SanctionSubjectDto"
            }
          },
          "filterHouses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HouseDto"
            }
          },
          "associatedSubjectIds": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "associatedHouseCodes": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "staffCode": {
            "type": "string",
            "nullable": true
          },
          "nameId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "GetSanctions_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sanctions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SanctionDto"
            }
          },
          "totalRows": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "GetSanctions_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "SanctionAttendance": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Either",
          "Attended",
          "NotAttended"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "SanctionCategory": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Either",
          "School",
          "House"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "GetSanctionTallies_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "tallies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SanctionTallyDto"
            }
          }
        }
      },
      "SanctionTallyDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SanctionStudentDto"
              }
            ]
          },
          "sanctionTypeCounts": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            }
          }
        }
      },
      "GetSanctionTallies_Request": {
        "allOf": [
          {
            "$ref": "#/components/schemas/GetSanctions_Request"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "GetFilters_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "houses": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/House"
            }
          },
          "subjects": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Subject"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetFilters_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetHouseRewards_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "distinctions": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Reward"
            }
          },
          "commendations": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/GetHouseRewards_Counter"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "Reward": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "pupilNameId": {
            "type": "integer",
            "format": "int32"
          },
          "staffNameId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pupilName": {
            "type": "string",
            "nullable": true
          },
          "staffName": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "comments": {
            "type": "string",
            "nullable": true
          },
          "counted": {
            "type": "boolean",
            "nullable": true
          },
          "dateSubmitted": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "dateCounted": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "removed": {
            "type": "boolean"
          },
          "staffUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "studentUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "academicYearId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "students": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Student"
            }
          },
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Student"
              }
            ]
          },
          "staffMember": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StaffMember"
              }
            ]
          }
        }
      },
      "GetHouseRewards_Counter": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Student"
              }
            ]
          },
          "totalCommendations": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "totalPrinted": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "totalTokensDue": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        }
      },
      "GetHouseRewards_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetRewardsRank_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "schoolCommendationRank": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "schoolDistinctionRank": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "houseCommendationRank": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "houseDistinctionRank": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetRewardsRank_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetStudentRewards_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "rewards": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Reward"
            }
          },
          "commendationCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "distinctionCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetStudentRewards_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetUserRewards_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchReward_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PatchReward_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "reward": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Reward"
              }
            ]
          }
        }
      },
      "PatchUpdateCount_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PatchUpdateCount_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "distinctions": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Reward"
            }
          },
          "commendations": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Student"
            }
          }
        }
      },
      "PostMarkPrinted_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostMarkPrinted_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "students": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Student"
            }
          },
          "rewards": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Reward"
            }
          }
        }
      },
      "PostRewards_Request": {
        "type": "object",
        "example": {
          "type": "Commendation"
        },
        "additionalProperties": false,
        "properties": {
          "query": {
            "type": "string",
            "nullable": true
          },
          "house": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/House"
              }
            ]
          },
          "subject": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Subject"
              }
            ]
          },
          "form": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Form"
              }
            ]
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "fromDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "toDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "PostRewardsTally_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "query": {
            "type": "string",
            "nullable": true
          },
          "houseCode": {
            "type": "string",
            "nullable": true
          },
          "fromDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "toDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "PutReward_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "reward": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Reward"
              }
            ]
          }
        }
      },
      "GetEmails_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "emails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmailSummary"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "EmailSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "from": {
            "type": "string",
            "nullable": true
          },
          "to": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "html": {
            "type": "string",
            "nullable": true
          },
          "text": {
            "type": "string",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "last_event": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetEmails_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetAcademicYearReports_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "reports": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReportDetail"
            }
          }
        }
      },
      "ReportDetail": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "yearGroup",
          "publishToParents",
          "publishToStudents"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "academicYear": {
            "type": "integer",
            "format": "int32"
          },
          "yearGroup": {
            "type": "string",
            "minLength": 1
          },
          "publishToParents": {
            "type": "string",
            "format": "date-time",
            "minLength": 1
          },
          "publishToStudents": {
            "type": "string",
            "format": "date-time",
            "minLength": 1
          },
          "sportAllocation": {
            "type": "boolean"
          },
          "draft": {
            "type": "boolean"
          },
          "hidden": {
            "type": "boolean"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "complete": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetAcademicYearReports_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetListOfReports_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "reports": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReportDetail"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetListOfReports_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetListOfReports_ReportTypes": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "All",
          "Ready",
          "Open",
          "Published"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "GetReport_Response": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ReportDetail"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "steps": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ReportSteps"
                }
              }
            }
          }
        ]
      },
      "ReportSteps": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "openDate",
          "closeDate",
          "number",
          "reportId"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "openDate": {
            "type": "string",
            "format": "date-time",
            "minLength": 1
          },
          "closeDate": {
            "type": "string",
            "format": "date-time",
            "minLength": 1
          },
          "number": {
            "type": "integer",
            "format": "int32"
          },
          "reportId": {
            "type": "integer",
            "format": "int32"
          },
          "hidden": {
            "type": "boolean"
          },
          "musicReports": {
            "type": "boolean"
          },
          "enableAiChecker": {
            "type": "boolean"
          },
          "overwriteName": {
            "type": "string",
            "nullable": true
          },
          "reportOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "groupSelectionsJson": {
            "type": "string",
            "nullable": true
          },
          "markGrades": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReportMarkGrades"
            }
          },
          "markGradesFields": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReportMarkGradesFields"
            }
          },
          "entriesToAdd": {
            "type": "array",
            "nullable": true,
            "items": {}
          },
          "entries": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReportEntry"
            }
          },
          "reportDetail": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportDetail"
              }
            ]
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "complete": {
            "type": "integer",
            "format": "int32"
          },
          "entryCount": {
            "type": "integer",
            "format": "int32"
          },
          "saving": {
            "type": "boolean"
          },
          "stepType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StepType"
              }
            ]
          }
        }
      },
      "ReportMarkGrades": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "entryId": {
            "type": "integer",
            "format": "int32"
          },
          "fieldId": {
            "type": "integer",
            "format": "int32"
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "assessment": {
            "type": "boolean"
          },
          "field": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportMarkGradesFields"
              }
            ]
          },
          "open": {
            "type": "boolean"
          }
        }
      },
      "ReportMarkGradesFields": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "hidden": {
            "type": "boolean"
          },
          "stepId": {
            "type": "integer",
            "format": "int32"
          },
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportMarkGradesFieldsOptions"
            }
          },
          "tempId": {
            "type": "string",
            "nullable": true
          },
          "saving": {
            "type": "boolean"
          }
        }
      },
      "ReportMarkGradesFieldsOptions": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "fieldId": {
            "type": "integer",
            "format": "int32"
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "tempId": {
            "type": "string",
            "nullable": true
          },
          "allowText": {
            "type": "boolean"
          }
        }
      },
      "ReportEntry": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "reportId": {
            "type": "integer",
            "format": "int32"
          },
          "stepId": {
            "type": "integer",
            "format": "int32"
          },
          "entryName": {
            "type": "string",
            "nullable": true
          },
          "reportText": {
            "type": "string",
            "nullable": true
          },
          "staffId": {
            "type": "integer",
            "format": "int32"
          },
          "pupilNameId": {
            "type": "integer",
            "format": "int32"
          },
          "pupilId": {
            "type": "integer",
            "format": "int32"
          },
          "pupilUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "staffUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "complete": {
            "type": "boolean"
          },
          "aiNotUsed": {
            "type": "boolean"
          },
          "useGrades": {
            "type": "boolean"
          },
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Student"
              }
            ]
          },
          "grades": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReportMarkGrades"
            }
          },
          "staffName": {
            "type": "string",
            "nullable": true
          },
          "published": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "hidden": {
            "type": "boolean"
          },
          "reportPlainText": {
            "type": "string",
            "nullable": true
          },
          "reportName": {
            "type": "string",
            "nullable": true
          },
          "reportHidden": {
            "type": "boolean"
          },
          "term": {
            "$ref": "#/components/schemas/Term"
          },
          "order": {
            "type": "integer",
            "format": "int32"
          },
          "stepNumber": {
            "type": "integer",
            "format": "int32"
          },
          "stepReportOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "academicYear": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "Term": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Michaelmas",
          "Lent",
          "Summer",
          "Unknown"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "StepType": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "SubjectSet",
          "Tutor",
          "House",
          "Individual"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "GetReport_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetReportList_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "reports": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportListItemDto"
            }
          },
          "nameId": {
            "type": "integer",
            "format": "int32"
          },
          "staff": {
            "type": "boolean"
          },
          "student": {
            "type": "boolean"
          },
          "parent": {
            "type": "boolean"
          }
        }
      },
      "ReportListItemDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "description": {
            "type": "string",
            "nullable": true
          },
          "pupilName": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "year": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "publishDate": {
            "type": "string",
            "format": "date-time"
          },
          "studentPublishDate": {
            "type": "string",
            "format": "date-time"
          },
          "published": {
            "type": "boolean"
          },
          "studentPublished": {
            "type": "boolean"
          },
          "hidden": {
            "type": "boolean"
          }
        }
      },
      "GetReportListRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetReportStats_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "completed": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetReportYears_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "years": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "integer",
              "format": "int32"
            }
          }
        }
      },
      "GetTeachersWithReports_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "teachers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportTeacherDto"
            }
          }
        }
      },
      "ReportTeacherDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "staffId": {
            "type": "integer",
            "format": "int32"
          },
          "nameId": {
            "type": "integer",
            "format": "int32"
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetTeachersWithReports_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "UpdateReportRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ReportDetail"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "CreateOneOffReportRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "stepId": {
            "type": "integer",
            "format": "int32"
          },
          "reportId": {
            "type": "integer",
            "format": "int32"
          },
          "subjectName": {
            "type": "string",
            "nullable": true
          },
          "students": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OneOffPupil"
            }
          }
        }
      },
      "OneOffPupil": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "pupilId": {
            "type": "integer",
            "format": "int32"
          },
          "nameId": {
            "type": "integer",
            "format": "int32"
          },
          "studentUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          }
        }
      },
      "CreateReportRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "details": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportDetail"
              }
            ]
          },
          "steps": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/CreateReportStepInput"
            }
          }
        }
      },
      "CreateReportStepInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "number": {
            "type": "integer",
            "format": "int32"
          },
          "overwriteName": {
            "type": "string",
            "nullable": true
          },
          "openDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "closeDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "hidden": {
            "type": "boolean"
          },
          "musicReports": {
            "type": "boolean"
          },
          "stepType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StepType"
              }
            ]
          },
          "entriesForSQL": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CreateReportStepEntries"
              }
            ]
          },
          "markGrades": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReportMarkGrades"
            }
          }
        }
      },
      "CreateReportStepEntries": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SetEntryGroup"
            }
          },
          "houses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HouseEntryGroup"
            }
          },
          "tutorGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TutorGroupEntryGroup"
            }
          },
          "staffMembers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StaffEntryGroup"
            }
          }
        }
      },
      "SetEntryGroup": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "setCode": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "tutor1SchoolReports": {
            "type": "boolean"
          },
          "tutor2SchoolReports": {
            "type": "boolean"
          },
          "tutor3SchoolReports": {
            "type": "boolean"
          },
          "tutor1Staff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportReallocationTeacher"
              }
            ]
          },
          "tutor2Staff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportReallocationTeacher"
              }
            ]
          },
          "tutor3Staff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportReallocationTeacher"
              }
            ]
          }
        }
      },
      "ReportReallocationTeacher": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "staffId": {
            "type": "integer",
            "format": "int32"
          },
          "nameId": {
            "type": "integer",
            "format": "int32"
          },
          "email": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "HouseEntryGroup": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          },
          "housemasterStaff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportReallocationTeacher"
              }
            ]
          }
        }
      },
      "TutorGroupEntryGroup": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          },
          "tutorStaffId": {
            "type": "integer",
            "format": "int32"
          },
          "tutorStaff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportReallocationTeacher"
              }
            ]
          }
        }
      },
      "StaffEntryGroup": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "staffId": {
            "type": "integer",
            "format": "int32"
          },
          "nameId": {
            "type": "integer",
            "format": "int32"
          },
          "staffUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          }
        }
      },
      "GetReportsToReview_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "reportsToReview": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportEntryDto"
            }
          }
        }
      },
      "ReportEntryDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "reportId": {
            "type": "integer",
            "format": "int32"
          },
          "stepId": {
            "type": "integer",
            "format": "int32"
          },
          "entryName": {
            "type": "string",
            "nullable": true
          },
          "reportText": {
            "type": "string",
            "nullable": true
          },
          "staffId": {
            "type": "integer",
            "format": "int32"
          },
          "pupilNameId": {
            "type": "integer",
            "format": "int32"
          },
          "pupilId": {
            "type": "integer",
            "format": "int32"
          },
          "complete": {
            "type": "boolean"
          },
          "useGrades": {
            "type": "boolean"
          },
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportStudentDto"
              }
            ]
          },
          "grades": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReportMarkGrades"
            }
          },
          "staffName": {
            "type": "string",
            "nullable": true
          },
          "published": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "reportPlainText": {
            "type": "string",
            "nullable": true
          },
          "reportName": {
            "type": "string",
            "nullable": true
          },
          "order": {
            "type": "integer",
            "format": "int32"
          },
          "stepNumber": {
            "type": "integer",
            "format": "int32"
          },
          "reportOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "reportHidden": {
            "type": "boolean"
          },
          "hidden": {
            "type": "boolean"
          },
          "aiCorrected": {
            "type": "boolean"
          },
          "originalText": {
            "type": "string",
            "nullable": true
          },
          "aiNotUsed": {
            "type": "boolean"
          }
        }
      },
      "ReportStudentDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "nameId": {
            "type": "integer",
            "format": "int32"
          },
          "pupilId": {
            "type": "integer",
            "format": "int32"
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "studentUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "emailAddress": {
            "type": "string",
            "nullable": true
          },
          "photo": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ReportsToReviewRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "stepId": {
            "type": "integer",
            "format": "int32"
          },
          "reportId": {
            "type": "integer",
            "format": "int32"
          },
          "pupilId": {
            "type": "integer",
            "format": "int32"
          },
          "stepNumber": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "DeleteReportTemplateRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetReportTemplate_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "template": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportTemplateSummary"
              }
            ]
          },
          "structure": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportTemplateStructure"
              }
            ]
          }
        }
      },
      "ReportTemplateSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "academicYear": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "yearGroup": {
            "type": "string",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ReportTemplateStructure": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "yearGroup": {
            "type": "string",
            "nullable": true
          },
          "sportAllocation": {
            "type": "boolean"
          },
          "hidden": {
            "type": "boolean"
          },
          "htmlTop": {
            "type": "string",
            "nullable": true
          },
          "htmlBottom": {
            "type": "string",
            "nullable": true
          },
          "steps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportTemplateStep"
            }
          }
        }
      },
      "ReportTemplateStep": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "number": {
            "type": "integer",
            "format": "int32"
          },
          "overwriteName": {
            "type": "string",
            "nullable": true
          },
          "reportOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "hidden": {
            "type": "boolean"
          },
          "musicReports": {
            "type": "boolean"
          },
          "enableAiChecker": {
            "type": "boolean"
          },
          "stepType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "groupSelectionsJson": {
            "type": "string",
            "nullable": true
          },
          "markGradeForms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportTemplateGradeField"
            }
          }
        }
      },
      "ReportTemplateGradeField": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "hidden": {
            "type": "boolean"
          },
          "type": {
            "type": "integer",
            "format": "int32"
          },
          "assessment": {
            "type": "boolean"
          },
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportTemplateGradeOption"
            }
          }
        }
      },
      "ReportTemplateGradeOption": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "allowText": {
            "type": "boolean"
          }
        }
      },
      "GetReportTemplate_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetReportTemplates_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "templates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportTemplateSummary"
            }
          }
        }
      },
      "CreateReportTemplateFromReportRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "DeleteReportStepRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetStaffSteps_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "count": {
            "type": "integer",
            "format": "int32"
          },
          "steps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportSteps"
            }
          },
          "reportAdmin": {
            "type": "boolean"
          }
        }
      },
      "AllOpenStepsRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetReportsInStep_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "staff": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReportStaffDto"
            }
          }
        }
      },
      "ReportStaffDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "staffPreferredName": {
            "type": "string",
            "nullable": true
          },
          "staffSurname": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "staffId": {
            "type": "integer",
            "format": "int32"
          },
          "complete": {
            "type": "integer",
            "format": "int32"
          },
          "setCodes": {
            "type": "string",
            "nullable": true
          },
          "loading": {
            "type": "boolean"
          }
        }
      },
      "ReportsInStepRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "UpdateReportStepRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "overwriteName": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int32"
          },
          "openDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "closeDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "hidden": {
            "type": "boolean"
          },
          "enableAiChecker": {
            "type": "boolean"
          },
          "reportOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "GetSportReportAllocations_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "allocations": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/SportReportAllocationRow"
            }
          }
        }
      },
      "CreateReportStepsBody": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "steps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportStepRequest"
            }
          }
        }
      },
      "ReportStepRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "reportId": {
            "type": "integer",
            "format": "int32"
          },
          "number": {
            "type": "integer",
            "format": "int32"
          },
          "overwriteName": {
            "type": "string",
            "nullable": true
          },
          "openDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "closeDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "hidden": {
            "type": "boolean"
          },
          "musicReports": {
            "type": "boolean"
          },
          "enableAiChecker": {
            "type": "boolean"
          },
          "reportOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "stepType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StepType"
              }
            ]
          },
          "sets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SetEntryGroup"
            }
          },
          "houses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HouseEntryGroup"
            }
          },
          "tutorGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TutorGroupEntryGroup"
            }
          },
          "staffMembers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StaffEntryGroup"
            }
          },
          "markGradeForms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MarkGradeForm"
            }
          }
        }
      },
      "MarkGradeForm": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "assessment": {
            "type": "boolean"
          },
          "hidden": {
            "type": "boolean"
          },
          "fieldId": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "type": "integer",
            "format": "int32"
          },
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MarkGradeFormOption"
            }
          }
        }
      },
      "MarkGradeFormOption": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "allowText": {
            "type": "boolean"
          }
        }
      },
      "SportReportAllocationRow": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "staff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SportStaffDto"
              }
            ]
          },
          "pupils": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SportPupilDto"
            }
          }
        }
      },
      "SportStaffDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "staffId": {
            "type": "integer",
            "format": "int32"
          },
          "nameId": {
            "type": "integer",
            "format": "int32"
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "staffUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          }
        }
      },
      "SportPupilDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "pupilId": {
            "type": "integer",
            "format": "int32"
          },
          "nameId": {
            "type": "integer",
            "format": "int32"
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetSportReportAllocations_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "CreateSportReportsRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "rows": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/SportReportAllocationRow"
            }
          },
          "reportId": {
            "type": "integer",
            "format": "int32"
          },
          "entryName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "DeleteReportSetupNoteRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetInfoForReport_Response": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ReportInfo"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "ReportInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "htmlTop": {
            "type": "string",
            "nullable": true
          },
          "htmlBottom": {
            "type": "string",
            "nullable": true
          },
          "reportId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "GetInfoForReport_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetReportDetails_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "report": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportDetail"
              }
            ]
          },
          "steps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportSteps"
            }
          }
        }
      },
      "GetReportDetails_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetReportDetailsForStudentYear_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "reports": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportDetail"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetReportDetailsForStudentYear_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetReportInfoDefaults_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "reportInfoDefault": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportInfoDefault"
              }
            ]
          }
        }
      },
      "ReportInfoDefault": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "htmlTop": {
            "type": "string",
            "nullable": true
          },
          "htmlBottom": {
            "type": "string",
            "nullable": true
          },
          "minCharCount": {
            "type": "integer",
            "format": "int32"
          },
          "maxCharCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetReportInfo_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "reportInfo": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportInfo"
              }
            ]
          }
        }
      },
      "GetReportInfo_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetReportInfoSteps_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "steps": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReportSteps"
            }
          }
        }
      },
      "GetReportInfoSteps_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetReportMarkGradesFieldsOptionsTemplates_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "templatesList": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReportMarkGradesFieldsOptionsTemplates"
            }
          }
        }
      },
      "ReportMarkGradesFieldsOptionsTemplates": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "templateName": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "allowText": {
            "type": "boolean"
          }
        }
      },
      "GetReportMatrix_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "matrixGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MatrixGroups"
            }
          }
        }
      },
      "MatrixGroups": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "templateName": {
            "type": "string",
            "nullable": true
          },
          "matrix": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReportMatrix"
            }
          }
        }
      },
      "ReportMatrix": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "templateName": {
            "type": "string",
            "nullable": true
          },
          "upper": {
            "type": "integer",
            "format": "int32"
          },
          "lower": {
            "type": "integer",
            "format": "int32"
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetReportSetupNotes_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "notes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportSetupNote"
            }
          }
        }
      },
      "ReportSetupNote": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "reportName": {
            "type": "string",
            "nullable": true
          },
          "dateUpdated": {
            "type": "string",
            "format": "date-time"
          },
          "updatedBy": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetReportSetupNotes_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "UpdateReportFieldRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ReportMarkGradesFields"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "CreateReportDetailsRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ReportDetail"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "UpdateInfoForReportRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "reportId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "htmlTop": {
            "type": "string",
            "nullable": true
          },
          "htmlBottom": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PutReportSetupNoteRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ReportSetupNote"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "GetReportSetupHouses_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "houses": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReportSetupHouse"
            }
          }
        }
      },
      "ReportSetupHouse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "housemasterCode": {
            "type": "string",
            "nullable": true
          },
          "housemasterSurname": {
            "type": "string",
            "nullable": true
          },
          "housemasterPreferredName": {
            "type": "string",
            "nullable": true
          },
          "housemasterStaffId": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetReportSetupStaff_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "staffMembers": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReportSetupStaff"
            }
          }
        }
      },
      "ReportSetupStaff": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "subject1": {
            "type": "string",
            "nullable": true
          },
          "subject2": {
            "type": "string",
            "nullable": true
          },
          "subject3": {
            "type": "string",
            "nullable": true
          },
          "staffId": {
            "type": "integer",
            "format": "int32"
          },
          "nameId": {
            "type": "integer",
            "format": "int32"
          },
          "reportWriter": {
            "type": "boolean"
          }
        }
      },
      "GetReportSetupTutorGroups_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "tutorGroups": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReportSetupTutorGroup"
            }
          }
        }
      },
      "ReportSetupTutorGroup": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "yearCode": {
            "type": "string",
            "nullable": true
          },
          "tutorCode": {
            "type": "string",
            "nullable": true
          },
          "tutorSurname": {
            "type": "string",
            "nullable": true
          },
          "tutorPreferredName": {
            "type": "string",
            "nullable": true
          },
          "tutorStaffId": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetReportSetupSubjectSets_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sets": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReportSetupSubjectSet"
            }
          }
        }
      },
      "ReportSetupSubjectSet": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "academicYear": {
            "type": "integer",
            "format": "int32"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "codeOnly": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "setCode": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "teachers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportSetupStaff"
            }
          }
        }
      },
      "DeleteStaffStepRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetEntriesForStudent_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportEntryDto"
            }
          }
        }
      },
      "GetEntriesForStudent_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetStaffReallocationSteps_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "staffSteps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportReallocationStaffSteps"
            }
          }
        }
      },
      "ReportReallocationStaffSteps": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "staffName": {
            "type": "string",
            "nullable": true
          },
          "stepId": {
            "type": "integer",
            "format": "int32"
          },
          "reportId": {
            "type": "integer",
            "format": "int32"
          },
          "number": {
            "type": "integer",
            "format": "int32"
          },
          "staffId": {
            "type": "integer",
            "format": "int32"
          },
          "deleteConfirm": {
            "type": "boolean"
          },
          "complete": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetStaffReallocationSteps_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetStudentsForReportStep_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "students": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportEntryDto"
            }
          }
        }
      },
      "GetStudentsForReportStep_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "ReallocateStudentRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "staffSteps": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportReallocationStaffSteps"
              }
            ]
          },
          "studentsToAdd": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReallocateStudentEntry"
            }
          },
          "studentsToRemove": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReallocateStudentEntry"
            }
          }
        }
      },
      "ReallocateStudentEntry": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportStudentDto"
              }
            ]
          }
        }
      },
      "ReallocateTeacherRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "staffSteps": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportReallocationStaffSteps"
              }
            ]
          },
          "newTeacher": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReallocateMsUser"
              }
            ]
          }
        }
      },
      "ReallocateMsUser": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SwitchTeacherRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "AddNewSetToReportRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "reportId": {
            "type": "integer",
            "format": "int32"
          },
          "year": {
            "type": "integer",
            "format": "int32"
          },
          "stepId": {
            "type": "integer",
            "format": "int32"
          },
          "setDetails": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportSetReallocationDetails"
              }
            ]
          },
          "teacher": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportReallocationTeacher"
              }
            ]
          },
          "useGrades": {
            "type": "boolean"
          }
        }
      },
      "ReportSetReallocationDetails": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "setCode": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ReportEntryRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetStaffEntries_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "count": {
            "type": "integer",
            "format": "int32"
          },
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportEntryDto"
            }
          }
        }
      },
      "StaffEntryRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetReportEntriesForReport_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportEntryDto"
            }
          }
        }
      },
      "GetReportEntriesForReport_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetReportEntries_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportEntryDto"
            }
          }
        }
      },
      "GetReportEntriesForFormRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetReportEntriesForReportRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetReportEntriesForSetRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetReportEntriesForTeacherRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetSchoolReportsForTutorGroup_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "schoolReports": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SchoolReportGroupDto"
            }
          }
        }
      },
      "SchoolReportGroupDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "pupilName": {
            "type": "string",
            "nullable": true
          },
          "reportEntries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportEntryDto"
            }
          },
          "publishDate": {
            "type": "string",
            "format": "date-time"
          },
          "studentPublishDate": {
            "type": "string",
            "format": "date-time"
          },
          "published": {
            "type": "boolean"
          },
          "studentPublished": {
            "type": "boolean"
          },
          "hidden": {
            "type": "boolean"
          }
        }
      },
      "GetReportEntriesForTutorGroupRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetReportEntry_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "entry": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportEntryDto"
              }
            ]
          },
          "characterCount": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CharacterCountDto"
              }
            ]
          },
          "commendationCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalCommendationCount": {
            "type": "integer",
            "format": "int32"
          },
          "distinctionCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalDistinctionCount": {
            "type": "integer",
            "format": "int32"
          },
          "booksRead": {
            "type": "integer",
            "format": "int32"
          },
          "totalBooksRead": {
            "type": "integer",
            "format": "int32"
          },
          "showStats": {
            "type": "boolean"
          },
          "showBooks": {
            "type": "boolean"
          }
        }
      },
      "CharacterCountDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "maxCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "minCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "step": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "CompleteAllRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "CompleteReportEntryRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "complete": {
            "type": "boolean"
          }
        }
      },
      "GetOtherReportEntries_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "otherEntries": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReportEntryDto"
            }
          }
        }
      },
      "OtherReportEntryRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "stepId": {
            "type": "integer",
            "format": "int32"
          },
          "stepNumber": {
            "type": "integer",
            "format": "int32"
          },
          "nameId": {
            "type": "integer",
            "format": "int32"
          },
          "staffId": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "SubmitReportEntryBulkRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "reportEntries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportEntryDto"
            }
          }
        }
      },
      "SubmitReportEntryRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "reportEntry"
        ],
        "properties": {
          "reportEntry": {
            "$ref": "#/components/schemas/ReportEntryDto"
          }
        }
      },
      "DeleteDelegationRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetDelegations_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "delegations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportDelegation"
            }
          }
        }
      },
      "ReportDelegation": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "staffEmail": {
            "type": "string",
            "nullable": true
          },
          "subjectCode": {
            "type": "string",
            "nullable": true
          },
          "delegatedBy": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetDelegations_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "CreateDelegationRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ReportDelegation"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "GetAllCharacterCounts_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "reports": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/CharacterCountDto"
            }
          }
        }
      },
      "GetCharacterCountForReportStep_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "count": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CharacterCountDto"
              }
            ]
          }
        }
      },
      "CharacterCountForStepRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetCharCount_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "charCount": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CharacterCountDto"
              }
            ]
          }
        }
      },
      "GetCharCount_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetReportCharCounts_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "charCounts": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/CharacterCountDto"
            }
          }
        }
      },
      "GetReportCharCounts_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "CharCountWriteRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "charCount": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CharacterCountDto"
              }
            ]
          }
        }
      },
      "GetEntriesForSubjectWithAssessments_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportEntryDto"
            }
          }
        }
      },
      "GetEntriesForSubjectWithAssessments_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "SaveAssessmentDataRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportEntry"
            }
          }
        }
      },
      "GetReportAnalytics_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "academicYear": {
            "type": "integer",
            "format": "int32"
          },
          "overall": {
            "$ref": "#/components/schemas/GetReportAnalytics_AnalyticsTotals"
          },
          "reports": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetReportAnalytics_ReportAnalyticsDto"
            }
          }
        }
      },
      "GetReportAnalytics_AnalyticsTotals": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalEntries": {
            "type": "integer",
            "format": "int32"
          },
          "complete": {
            "type": "integer",
            "format": "int32"
          },
          "incomplete": {
            "type": "integer",
            "format": "int32"
          },
          "completePct": {
            "type": "integer",
            "format": "int32"
          },
          "aiAssisted": {
            "type": "integer",
            "format": "int32"
          },
          "aiNotUsed": {
            "type": "integer",
            "format": "int32"
          },
          "aiUntouched": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetReportAnalytics_ReportAnalyticsDto": {
        "allOf": [
          {
            "$ref": "#/components/schemas/GetReportAnalytics_AnalyticsTotals"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "reportId": {
                "type": "integer",
                "format": "int32"
              },
              "name": {
                "type": "string",
                "nullable": true
              },
              "academicYear": {
                "type": "integer",
                "format": "int32"
              },
              "yearGroup": {
                "type": "string",
                "nullable": true
              },
              "publishedDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "steps": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/GetReportAnalytics_StepAnalyticsDto"
                }
              },
              "subjects": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/GetReportAnalytics_SubjectAnalyticsDto"
                }
              }
            }
          }
        ]
      },
      "GetReportAnalytics_StepAnalyticsDto": {
        "allOf": [
          {
            "$ref": "#/components/schemas/GetReportAnalytics_AnalyticsTotals"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "stepId": {
                "type": "integer",
                "format": "int32"
              },
              "number": {
                "type": "integer",
                "format": "int32"
              },
              "name": {
                "type": "string",
                "nullable": true
              },
              "openDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "closeDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "state": {
                "type": "string"
              },
              "enableAiChecker": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "GetReportAnalytics_SubjectAnalyticsDto": {
        "allOf": [
          {
            "$ref": "#/components/schemas/GetReportAnalytics_AnalyticsTotals"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "name": {
                "type": "string"
              }
            }
          }
        ]
      },
      "GetReportAnalytics_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "DeleteReleaseNoteRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetReleaseNotes_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "releaseNotes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReleaseNote"
            }
          }
        }
      },
      "ReleaseNote": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "version"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "type": "string",
            "minLength": 1
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "bodyHtml": {
            "type": "string",
            "nullable": true
          },
          "published": {
            "type": "boolean"
          },
          "releasedOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "GetReleaseNotes_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "UpsertReleaseNote_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "releaseNote": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReleaseNote"
              }
            ]
          }
        }
      },
      "UpsertReleaseNote_Request": {
        "type": "object",
        "example": {
          "published": false
        },
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "version": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "bodyHtml": {
            "type": "string",
            "nullable": true
          },
          "published": {
            "type": "boolean"
          },
          "releasedOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "GetPupils_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "pupils": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PupilSummary"
            }
          }
        }
      },
      "PupilSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "upi": {
            "type": "string",
            "format": "guid"
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "yearGroup": {
            "type": "string",
            "nullable": true
          },
          "form": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "academicHouseId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "boardingHouseId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "leaveDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "GetPupils_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetPupil_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "pupil": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PupilDetail"
              }
            ]
          }
        }
      },
      "PupilDetail": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "upi": {
            "type": "string",
            "format": "guid"
          },
          "upn": {
            "type": "string",
            "nullable": true
          },
          "forename": {
            "type": "string",
            "nullable": true
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "middleNames": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "gender": {
            "type": "string",
            "nullable": true
          },
          "lifecycleStatus": {
            "type": "string"
          },
          "enrolments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EnrolmentDto"
            }
          }
        }
      },
      "EnrolmentDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "academicYearId": {
            "type": "string",
            "format": "guid"
          },
          "academicYearCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "yearGroup": {
            "type": "string",
            "nullable": true
          },
          "form": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "pupilType": {
            "type": "string",
            "nullable": true
          },
          "academicHouseId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "boardingHouseId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "inUse": {
            "type": "boolean"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "leaveDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "GetPupil_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "FormsByUserRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "FormsRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "UserApprovalsRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "ApprovalsType": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "FormsThatRequireApproving",
          "FormsThatUserApprovedAlready",
          "ClosedForms"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "UserFormRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "SubmitCommentRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/PdComment"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "PdComment": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "formId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "stepOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "comments": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "private": {
            "type": "boolean",
            "nullable": true
          },
          "submitted": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "SubmitPdFormRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/PdForm"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "isForm": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "PdForm": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "managerName": {
            "type": "string",
            "nullable": true
          },
          "managerEmail": {
            "type": "string",
            "nullable": true
          },
          "courseTitle": {
            "type": "string",
            "nullable": true
          },
          "breakouts": {
            "type": "boolean"
          },
          "breakoutsDescription": {
            "type": "string",
            "nullable": true
          },
          "courseDescription": {
            "type": "string",
            "nullable": true
          },
          "organisation": {
            "type": "string",
            "nullable": true
          },
          "courseLink": {
            "type": "string",
            "nullable": true
          },
          "location": {
            "type": "string",
            "nullable": true
          },
          "duration": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "courseCost": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "travelCost": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "budget": {
            "type": "string",
            "nullable": true
          },
          "userPermissions": {
            "type": "string",
            "nullable": true
          },
          "selfBook": {
            "type": "boolean"
          },
          "approved": {
            "type": "boolean"
          },
          "denied": {
            "type": "boolean"
          },
          "booked": {
            "type": "boolean"
          },
          "lessonCover": {
            "type": "boolean"
          },
          "unrestricted": {
            "type": "boolean"
          },
          "lessonCoverDetails": {
            "type": "string",
            "nullable": true
          },
          "bookedDescription": {
            "type": "string",
            "nullable": true
          },
          "submitted": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "comments": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/PdComment"
            }
          },
          "approvals": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/PdApproval"
            }
          },
          "steps": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/PdFormStep"
            }
          },
          "coverList": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          }
        }
      },
      "PdApproval": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "formId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "stepOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "responded": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "approved": {
            "type": "boolean"
          },
          "denied": {
            "type": "boolean"
          },
          "obsolete": {
            "type": "boolean"
          },
          "form": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PdForm"
              }
            ]
          }
        }
      },
      "PdFormStep": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "formId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "stepOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "approved": {
            "type": "boolean"
          },
          "denied": {
            "type": "boolean"
          },
          "approvalStep": {
            "type": "boolean"
          },
          "responded": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "UpdateApprovalsRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "approvalId": {
            "type": "integer",
            "format": "int32"
          },
          "stepOrder": {
            "type": "integer",
            "format": "int32"
          },
          "denied": {
            "type": "boolean"
          },
          "form": {
            "$ref": "#/components/schemas/PdForm"
          }
        }
      },
      "UpdateFormRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/PdForm"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "prevBookingDetails": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "GetPeriodsForDate_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "periods": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Period"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetPeriodsForDate_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostOpenApplySummaryPdf_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "openApplyIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "fileName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostPhotoGridPdf_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "title": {
            "type": "string",
            "nullable": true
          },
          "objectType": {
            "type": "string",
            "nullable": true
          },
          "people": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostPhotoGridPdf_GridPerson"
            }
          }
        }
      },
      "PostPhotoGridPdf_GridPerson": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          },
          "label": {
            "type": "string",
            "nullable": true
          },
          "captions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "PostRewardVouchersPdf_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "title": {
            "type": "string",
            "nullable": true
          },
          "vouchers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostRewardVouchersPdf_Voucher"
            }
          }
        }
      },
      "PostRewardVouchersPdf_Voucher": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "line1": {
            "type": "string",
            "nullable": true
          },
          "line2": {
            "type": "string",
            "nullable": true
          },
          "amount": {
            "type": "string",
            "nullable": true
          },
          "amountWords": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostSchoolReportPdf_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "reportName": {
            "type": "string",
            "nullable": true
          },
          "students": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostSchoolReportPdf_ReportStudent"
            }
          }
        }
      },
      "PostSchoolReportPdf_ReportStudent": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studentName": {
            "type": "string",
            "nullable": true
          },
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostSchoolReportPdf_ReportSection"
            }
          }
        }
      },
      "PostSchoolReportPdf_ReportSection": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "title": {
            "type": "string",
            "nullable": true
          },
          "grades": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostSchoolReportPdf_ReportGrade"
            }
          },
          "bodyHtml": {
            "type": "string",
            "nullable": true
          },
          "trailingText": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostSchoolReportPdf_ReportGrade": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostTimetablesPdf_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "title": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "upis": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "guid"
            }
          }
        }
      },
      "DeleteSlot_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetOverseaStudentsForEvening_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "count": {
            "type": "integer",
            "format": "int32"
          },
          "pupils": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningPupilDto"
            }
          }
        }
      },
      "ParentsEveningPupilDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "nameId": {
            "type": "integer",
            "format": "int32"
          },
          "pupilId": {
            "type": "integer",
            "format": "int32"
          },
          "studentUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "house": {
            "type": "string",
            "nullable": true
          },
          "form": {
            "type": "string",
            "nullable": true
          },
          "emailAddress": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "overseas": {
            "type": "boolean"
          },
          "boarder": {
            "type": "boolean"
          },
          "leaver": {
            "type": "boolean"
          }
        }
      },
      "GetOverseaStudentsForEvening_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetStudentsForOneOff_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "students": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningPupilDto"
            }
          }
        }
      },
      "GetStudentsForOneOff_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchUpdateTeacherPreferences_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "preferences": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ParentsEveningPreferenceDto"
            }
          }
        }
      },
      "ParentsEveningPreferenceDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "staffNameId": {
            "type": "integer",
            "format": "int32"
          },
          "dateId": {
            "type": "integer",
            "format": "int32"
          },
          "eveningId": {
            "type": "integer",
            "format": "int32"
          },
          "preferenceType": {
            "type": "integer",
            "format": "int32"
          },
          "teacher": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningTeacherDto"
              }
            ]
          }
        }
      },
      "ParentsEveningTeacherDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "staffId": {
            "type": "integer",
            "format": "int32"
          },
          "nameId": {
            "type": "integer",
            "format": "int32"
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "contact": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningStaffDto"
              }
            ]
          }
        }
      },
      "ParentsEveningStaffDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "nameId": {
            "type": "integer",
            "format": "int32"
          },
          "staffId": {
            "type": "integer",
            "format": "int32"
          },
          "staffUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "staffCode": {
            "type": "string",
            "nullable": true
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "photo": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CreateMultipleSlots_Request": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "duration",
          "gap",
          "start",
          "end"
        ],
        "properties": {
          "duration": {
            "type": "string",
            "minLength": 1
          },
          "gap": {
            "type": "string",
            "minLength": 1
          },
          "start": {
            "type": "string",
            "format": "date-time",
            "minLength": 1
          },
          "end": {
            "type": "string",
            "format": "date-time",
            "minLength": 1
          },
          "eveningId": {
            "type": "integer",
            "format": "int32"
          },
          "dateId": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CreateOneOffSet_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "pupils": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ParentsEveningPupilDto"
            }
          },
          "teacher": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningStaffDto"
              }
            ]
          },
          "selectedDates": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ParentsEveningDateDto"
            }
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ParentsEveningDateDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "eveningId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "teacherOversight": {
            "type": "boolean"
          },
          "overseasOnly": {
            "type": "boolean"
          },
          "limitedOversight": {
            "type": "boolean"
          },
          "enforceAlternativeAppointments": {
            "type": "boolean"
          },
          "slots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningSlotDto"
            }
          },
          "locations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningLocationDto"
            }
          },
          "unavailabilities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningAvailabilityDto"
            }
          },
          "teacherPreferences": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningPreferenceDto"
            }
          }
        }
      },
      "ParentsEveningSlotDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "startDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "duration": {
            "type": "integer",
            "format": "int32"
          },
          "eveningId": {
            "type": "integer",
            "format": "int32"
          },
          "dateId": {
            "type": "integer",
            "format": "int32"
          },
          "overseas": {
            "type": "boolean"
          },
          "eveningName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ParentsEveningLocationDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "eveningId": {
            "type": "integer",
            "format": "int32"
          },
          "dateId": {
            "type": "integer",
            "format": "int32"
          },
          "staffId": {
            "type": "integer",
            "format": "int32"
          },
          "staffNameId": {
            "type": "integer",
            "format": "int32"
          },
          "location": {
            "type": "string",
            "nullable": true
          },
          "onlineLink": {
            "type": "string",
            "nullable": true
          },
          "onlineId": {
            "type": "string",
            "nullable": true
          },
          "teacher": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningContactDto"
              }
            ]
          }
        }
      },
      "ParentsEveningContactDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "nameId": {
            "type": "integer",
            "format": "int32"
          },
          "staffId": {
            "type": "integer",
            "format": "int32"
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "telephone": {
            "type": "string",
            "nullable": true
          },
          "photo": {
            "type": "string",
            "nullable": true
          },
          "role": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ParentsEveningAvailabilityDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "slotId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "dateId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "eveningId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "staffId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "staffNameId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "available": {
            "type": "boolean"
          },
          "booked": {
            "type": "boolean"
          },
          "teacher": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningContactDto"
              }
            ]
          }
        }
      },
      "UpdateLocations_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "locationDate": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningDateDto"
              }
            ]
          },
          "locations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningLocationDto"
            }
          }
        }
      },
      "CreateEveningDate_Request": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ParentsEveningDateDto"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "PopulateTeacherSlots_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "eveningId": {
            "type": "integer",
            "format": "int32"
          },
          "includeBreaks": {
            "type": "boolean"
          }
        }
      },
      "UpdateSetsForEvening_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningSetDto"
            }
          }
        }
      },
      "ParentsEveningSetDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "setCode": {
            "type": "string",
            "nullable": true
          },
          "setDescription": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "subjectSetId": {
            "type": "integer",
            "format": "int32"
          },
          "subjectCode": {
            "type": "string",
            "nullable": true
          },
          "eveningId": {
            "type": "integer",
            "format": "int32"
          },
          "oneOff": {
            "type": "boolean"
          },
          "dateIds": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "teacherSets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningTeacherSetDto"
            }
          },
          "hide": {
            "type": "boolean"
          }
        }
      },
      "ParentsEveningTeacherSetDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "teacherId": {
            "type": "integer",
            "format": "int32"
          },
          "setId": {
            "type": "integer",
            "format": "int32"
          },
          "primaryTeacher": {
            "type": "boolean"
          },
          "attending": {
            "type": "boolean"
          },
          "forceAllEvening": {
            "type": "boolean"
          },
          "forceShortEvening": {
            "type": "boolean"
          },
          "teacher": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningTeacherDto"
              }
            ]
          }
        }
      },
      "UpdateUnavailability_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "unavailabilities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningAvailabilityDto"
            }
          }
        }
      },
      "GetAppointmentRequest_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "appointmentRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningAppointmentRequestDto"
            }
          }
        }
      },
      "ParentsEveningAppointmentRequestDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "eveningId": {
            "type": "integer",
            "format": "int32"
          },
          "staffNameId": {
            "type": "integer",
            "format": "int32"
          },
          "dateId": {
            "type": "integer",
            "format": "int32"
          },
          "pupilNameId": {
            "type": "integer",
            "format": "int32"
          },
          "parentNameId": {
            "type": "integer",
            "format": "int32"
          },
          "studentUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "staffUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "decision": {
            "type": "integer",
            "format": "int32"
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "setId": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetAppointmentRequest_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchAppointmentRequest_Request": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ParentsEveningAppointmentRequestDto"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "slotId": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ]
      },
      "PostAppointmentRequest_Request": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ParentsEveningAppointmentRequestDto"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "GetEveningDetailsForHouse_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "evenings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningDto"
            }
          },
          "pupils": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningPupilDto"
            }
          },
          "appointments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningAppointmentInfoDto"
            }
          }
        }
      },
      "ParentsEveningDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "parentOpenDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "parentCloseDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "staffOpenDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "staffCloseDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "studentOpenDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "studentCloseDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "hideDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "yearGroup": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "letterHTML": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "parentsCanBook": {
            "type": "boolean"
          },
          "studentsCanBook": {
            "type": "boolean"
          },
          "eveningHidden": {
            "type": "boolean"
          }
        }
      },
      "ParentsEveningAppointmentInfoDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningContactDto"
              }
            ]
          },
          "teacher": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningContactDto"
              }
            ]
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "onlineLink": {
            "type": "string",
            "nullable": true
          },
          "location": {
            "type": "string",
            "nullable": true
          },
          "startDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "GetEveningDetailsForHouse_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetEveningForParent_Response": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ParentsEveningDto"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "dates": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ParentsEveningDateDto"
                }
              },
              "pupils": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ParentsEveningDetailPupilDto"
                }
              },
              "appointments": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ParentsEveningAppointmentDto"
                }
              },
              "viewers": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ParentsEveningViewerDto"
                  }
                ]
              },
              "overseas": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "ParentsEveningDetailPupilDto": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ParentsEveningPupilDto"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "sets": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ParentsEveningSetDto"
                }
              },
              "appointments": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ParentsEveningAppointmentDto"
                }
              }
            }
          }
        ]
      },
      "ParentsEveningAppointmentDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "teacherNameId": {
            "type": "integer",
            "format": "int32"
          },
          "setId": {
            "type": "integer",
            "format": "int32"
          },
          "slotId": {
            "type": "integer",
            "format": "int32"
          },
          "eveningId": {
            "type": "integer",
            "format": "int32"
          },
          "dateId": {
            "type": "integer",
            "format": "int32"
          },
          "pupilNameId": {
            "type": "integer",
            "format": "int32"
          },
          "parentNameId": {
            "type": "integer",
            "format": "int32"
          },
          "attended": {
            "type": "boolean"
          },
          "cancelling": {
            "type": "boolean"
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "pupil": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningContactDto"
              }
            ]
          },
          "parent": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningContactDto"
              }
            ]
          },
          "showJoin": {
            "type": "boolean"
          },
          "canCancel": {
            "type": "boolean"
          },
          "hidden": {
            "type": "boolean"
          }
        }
      },
      "ParentsEveningViewerDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "parentNameId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "viewerEmail": {
            "type": "string",
            "nullable": true
          },
          "shareLink": {
            "type": "string",
            "nullable": true
          },
          "eveningId": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetEveningForParent_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetEveningForParentAdmin_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetEveningForStudent_Response": {
        "allOf": [
          {
            "$ref": "#/components/schemas/GetEveningForParent_Response"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "parents": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ParentsEveningBasicNameDto"
                }
              }
            }
          }
        ]
      },
      "ParentsEveningBasicNameDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "nameId": {
            "type": "integer",
            "format": "int32"
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "mobileNumber": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetEveningForStudent_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetEveningForStaffDetail_Response": {
        "allOf": [
          {
            "$ref": "#/components/schemas/GetParentsEvening_Response"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "pupils": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ParentsEveningPupilDto"
                }
              },
              "parents": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ParentsEveningParentDto"
                }
              }
            }
          }
        ]
      },
      "ParentsEveningParentDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "nameId": {
            "type": "integer",
            "format": "int32"
          },
          "rank": {
            "type": "integer",
            "format": "int32"
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "letterSalutation": {
            "type": "string",
            "nullable": true
          },
          "labelSalutation": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "partnerId": {
            "type": "integer",
            "format": "int32"
          },
          "studentNameId": {
            "type": "integer",
            "format": "int32"
          },
          "impersonating": {
            "type": "boolean"
          },
          "boarder": {
            "type": "boolean"
          }
        }
      },
      "GetParentsEvening_Response": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ParentsEveningDto"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "dates": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ParentsEveningDateDto"
                }
              },
              "sets": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ParentsEveningSetDto"
                }
              },
              "appointments": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ParentsEveningAppointmentDto"
                }
              }
            }
          }
        ]
      },
      "GetEveningForStaffDetail_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetEveningsForAudience_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "evenings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningDto"
            }
          }
        }
      },
      "GetEveningsForStaff_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "staffEvenings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StaffEveningDto"
            }
          },
          "staffId": {
            "type": "integer",
            "format": "int32"
          },
          "staffNameId": {
            "type": "integer",
            "format": "int32"
          },
          "email": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "StaffEveningDto": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ParentsEveningDto"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "primaryTeacher": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "GetParentsEvening_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "ParentsEveningMISData_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "pupils": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningPupilDto"
            }
          },
          "parents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningParentDto"
            }
          }
        }
      },
      "ParentsEveningMISData_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetAllParentsEvenings_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "parentsEvenings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningDto"
            }
          }
        }
      },
      "UpdateParentsEvening_Request": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ParentsEveningDto"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "CreateParentsEvening_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CreateParentsEvening_Request": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ParentsEveningDto"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "CancelAppointment_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetSharedAppointments_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "appointments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningAppointmentInfoDto"
            }
          }
        }
      },
      "GetStudentAppointments_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "appointments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningAppointmentInfoDto"
            }
          }
        }
      },
      "BookAppointment_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "successful": {
            "type": "boolean"
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "BookAppointment_Request": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ParentsEveningAppointmentDto"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "BookOneOffAppointment_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "selectedSet": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningSetDto"
              }
            ]
          },
          "selectedParent": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningParentDto"
              }
            ]
          },
          "selectedPupil": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningPupilDto"
              }
            ]
          },
          "selectedTeacher": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningTeacherDto"
              }
            ]
          },
          "selectedSlot": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningSlotDto"
              }
            ]
          }
        }
      },
      "CancelAppointmentWithNotification_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "notifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CancelNotificationDto"
            }
          }
        }
      },
      "CancelNotificationDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "subject": {
            "type": "string",
            "nullable": true
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "recipient": {
            "type": "string",
            "nullable": true
          },
          "link": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "RearrangeAppointment_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "selectedSet": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningSetDto"
              }
            ]
          },
          "selectedParent": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningParentDto"
              }
            ]
          },
          "selectedPupil": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningPupilDto"
              }
            ]
          },
          "selectedTeacher": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningTeacherDto"
              }
            ]
          },
          "selectedSlot": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningSlotDto"
              }
            ]
          },
          "oldSlot": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningSlotDto"
              }
            ]
          },
          "notificationText": {
            "type": "string",
            "nullable": true
          },
          "sendNotification": {
            "type": "boolean"
          },
          "existingAppointment": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentsEveningAppointmentDto"
              }
            ]
          }
        }
      },
      "RemindParents_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "parents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentsEveningParentDto"
            }
          },
          "reminderText": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ShareAppointments_Response": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ParentsEveningViewerDto"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "ShareAppointments_Request": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ParentsEveningViewerDto"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "GetOtherSchools_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "otherSchools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OtherSchool"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetOtherSchools_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetFormBySubmission_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "form": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OptionForm"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "OptionForm": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "displayName"
        ],
        "properties": {
          "optionFormId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "minLength": 1
          },
          "open": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "due": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "subtitle": {
            "type": "string",
            "maxLength": 500,
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "permissions": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/OptionFormPermission"
            }
          },
          "pathways": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/OptionFormPathway"
            }
          },
          "questions": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/OptionFormQuestion"
            }
          },
          "submissions": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/OptionFormSubmission"
            }
          }
        }
      },
      "OptionFormPermission": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "optionFormPermissionId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "optionFormId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/AccessType"
          },
          "access": {
            "$ref": "#/components/schemas/AccessLevel"
          },
          "identifier": {
            "type": "string",
            "maxLength": 500,
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "maxLength": 500,
            "nullable": true
          }
        }
      },
      "AccessType": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Individual",
          "Group"
        ],
        "enum": [
          0,
          1
        ]
      },
      "AccessLevel": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Viewer",
          "Owner"
        ],
        "enum": [
          0,
          1
        ]
      },
      "OptionFormPathway": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "optionFormPathwayId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "optionFormId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "subtitle": {
            "type": "string",
            "maxLength": 500,
            "nullable": true
          },
          "order": {
            "type": "integer",
            "format": "int32"
          },
          "questions": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/OptionFormQuestion"
            }
          }
        }
      },
      "OptionFormQuestion": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "displayName"
        ],
        "properties": {
          "optionFormQuestionId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "optionFormId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "optionFormPathwayId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "minLength": 1
          },
          "hint": {
            "type": "string",
            "maxLength": 500,
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/OptionFormQuestionType"
          },
          "required": {
            "type": "boolean"
          },
          "customOrder": {
            "type": "boolean"
          },
          "maxItems": {
            "type": "integer",
            "format": "int32"
          },
          "minItems": {
            "type": "integer",
            "format": "int32"
          },
          "order": {
            "type": "integer",
            "format": "int32"
          },
          "choices": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/OptionFormQuestionChoice"
            }
          },
          "answers": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/OptionFormSubmissionAnswer"
            }
          }
        }
      },
      "OptionFormQuestionType": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Text",
          "Date",
          "Time",
          "DateTime",
          "Select",
          "MultiSelect",
          "Checkbox"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6
        ]
      },
      "OptionFormQuestionChoice": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "optionFormQuestionChoiceId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "optionFormQuestionId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "order": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "OptionFormSubmissionAnswer": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "optionFormSubmissionAnswerId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "optionFormSubmissionId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "optionFormQuestionId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "OptionFormSubmission": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "submittedByUpi",
          "studentUpi",
          "submittedByName",
          "submittedAt"
        ],
        "properties": {
          "optionFormSubmissionId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "optionFormId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "submittedByUpi": {
            "type": "string",
            "format": "guid",
            "minLength": 1
          },
          "studentUpi": {
            "type": "string",
            "format": "guid",
            "minLength": 1
          },
          "submittedByName": {
            "type": "string",
            "maxLength": 255,
            "minLength": 1
          },
          "submittedAt": {
            "type": "string",
            "format": "date-time",
            "minLength": 1
          },
          "answers": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/OptionFormSubmissionAnswer"
            }
          },
          "submitted": {
            "type": "boolean"
          },
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Student"
              }
            ]
          },
          "submittedBy": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/IPerson"
              }
            ]
          }
        }
      },
      "IPerson": {
        "type": "object",
        "x-abstract": true,
        "additionalProperties": false,
        "properties": {
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "photo": {
            "type": "string",
            "nullable": true
          },
          "upi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "canBeMasqueraded": {
            "type": "boolean"
          }
        }
      },
      "GetFormBySubmission_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetOptionForms_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "optionForms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OptionForm"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetOptionForms_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchOptionForm_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "optionForm": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OptionForm"
              }
            ]
          }
        }
      },
      "PostOptionForm_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "optionFormId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostOptionForm_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "optionForm": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OptionForm"
              }
            ]
          }
        }
      },
      "PostOptionFormSubmission_Request": {
        "type": "object",
        "example": {
          "students": []
        },
        "additionalProperties": false,
        "properties": {
          "optionFormId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "students": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Student"
            }
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetOpenApplyStudents_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "students": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OpenApplyStudent"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "OpenApplyStudent": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "openApplyId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "customId": {
            "type": "string",
            "nullable": true
          },
          "applicantId": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "otherName": {
            "type": "string",
            "nullable": true
          },
          "birthDate": {
            "type": "string",
            "nullable": true
          },
          "gender": {
            "type": "string",
            "nullable": true
          },
          "enrollmentYear": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "fullAddress": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "addressIi": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "type": "string",
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "grade": {
            "type": "string",
            "nullable": true
          },
          "campus": {
            "type": "string",
            "nullable": true
          },
          "campusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "tags": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "statusLevel": {
            "type": "string",
            "nullable": true
          },
          "statusChangedAt": {
            "type": "string",
            "nullable": true
          },
          "managebacStudentId": {
            "type": "string",
            "nullable": true
          },
          "mbId": {
            "type": "string",
            "nullable": true
          },
          "appliedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "enrolledAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "inquiredAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siblingIds": {
            "type": "string",
            "nullable": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "nationality": {
            "type": "string",
            "nullable": true
          },
          "studentId": {
            "type": "string",
            "nullable": true
          },
          "profilePhotoUpdatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "checklistState": {
            "type": "string",
            "nullable": true
          },
          "inquiredDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "appliedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "admittedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "waitListedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "declinedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "enrolledDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "withdrawnDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "graduatedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "representative": {
            "type": "string",
            "nullable": true
          },
          "enrollmentDate": {
            "type": "string",
            "nullable": true
          },
          "sourceCampaign": {
            "type": "string",
            "nullable": true
          },
          "contactDate": {
            "type": "string",
            "nullable": true
          },
          "parentIds": {
            "type": "string",
            "nullable": true
          },
          "reenrollments": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "photo": {
            "type": "string",
            "nullable": true
          },
          "customFields": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OpenApplyStudentCustomFields"
              }
            ]
          },
          "siblingInformation": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/OpenApplySiblingInformation"
            }
          },
          "feederSchool": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OpenApplyFeederSchool"
              }
            ]
          },
          "privateNotes": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/PrivateNote"
            }
          }
        }
      },
      "OpenApplyStudentCustomFields": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "openApplyId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "roiEnquiryComments": {
            "type": "string",
            "nullable": true
          },
          "mobilePhone": {
            "type": "string",
            "nullable": true
          },
          "idAtIdType": {
            "type": "string",
            "nullable": true
          },
          "idAtIdNumber": {
            "type": "string",
            "nullable": true
          },
          "idAtIdExpiry": {
            "type": "string",
            "nullable": true
          },
          "idAtIdPhoto": {
            "type": "string",
            "nullable": true
          },
          "nationality": {
            "type": "string",
            "nullable": true
          },
          "idAtAcceptPrivacyPolicy": {
            "type": "string",
            "nullable": true
          },
          "isebScore": {
            "type": "string",
            "nullable": true
          },
          "ukiset": {
            "type": "string",
            "nullable": true
          },
          "sonsHouse": {
            "type": "string",
            "nullable": true
          },
          "parentLegalGuardianYn": {
            "type": "string",
            "nullable": true
          },
          "agentYn": {
            "type": "string",
            "nullable": true
          },
          "agencyName": {
            "type": "string",
            "nullable": true
          },
          "agentContactName": {
            "type": "string",
            "nullable": true
          },
          "agentContactEmail": {
            "type": "string",
            "nullable": true
          },
          "countryOfBirth": {
            "type": "string",
            "nullable": true
          },
          "nationalityAmount": {
            "type": "string",
            "nullable": true
          },
          "secondNationality": {
            "type": "string",
            "nullable": true
          },
          "thirdNationality": {
            "type": "string",
            "nullable": true
          },
          "nativeLanguageEnglishYn": {
            "type": "string",
            "nullable": true
          },
          "language": {
            "type": "string",
            "nullable": true
          },
          "anotherLanguageFluentlyYn": {
            "type": "string",
            "nullable": true
          },
          "secondLanguage": {
            "type": "string",
            "nullable": true
          },
          "thirdLanguage": {
            "type": "string",
            "nullable": true
          },
          "ethnicityCustom": {
            "type": "string",
            "nullable": true
          },
          "homeAddressVillageArea": {
            "type": "string",
            "nullable": true
          },
          "appliedBefore": {
            "type": "string",
            "nullable": true
          },
          "boarderDay": {
            "type": "string",
            "nullable": true
          },
          "bdUndecided": {
            "type": "string",
            "nullable": true
          },
          "linksWithSchool": {
            "type": "string",
            "nullable": true
          },
          "linksWithSchoolOtFather": {
            "type": "string",
            "nullable": true
          },
          "linksWithSchoolStaff": {
            "type": "string",
            "nullable": true
          },
          "linksWithSchoolOther": {
            "type": "string",
            "nullable": true
          },
          "applyingOtherSchools": {
            "type": "string",
            "nullable": true
          },
          "letterSalutation": {
            "type": "string",
            "nullable": true
          },
          "labelSalutation": {
            "type": "string",
            "nullable": true
          },
          "additionalInformation": {
            "type": "string",
            "nullable": true
          },
          "lessAcademicYearYn": {
            "type": "string",
            "nullable": true
          },
          "sixthFormSubject1": {
            "type": "string",
            "nullable": true
          },
          "sixthFormSubject2": {
            "type": "string",
            "nullable": true
          },
          "sixthFormSubject3": {
            "type": "string",
            "nullable": true
          },
          "sixthFormSubject4": {
            "type": "string",
            "nullable": true
          },
          "extraCurricularAchievements": {
            "type": "string",
            "nullable": true
          },
          "feeReductionYn": {
            "type": "string",
            "nullable": true
          },
          "feeReductionTexts": {
            "type": "string",
            "nullable": true
          },
          "disabilityYn": {
            "type": "string",
            "nullable": true
          },
          "officialDiagnosisYn": {
            "type": "string",
            "nullable": true
          },
          "medicalCondition": {
            "type": "string",
            "nullable": true
          },
          "medicalConditionDetails": {
            "type": "string",
            "nullable": true
          },
          "learningSupportYn": {
            "type": "string",
            "nullable": true
          },
          "learningSupportDetails": {
            "type": "string",
            "nullable": true
          },
          "medicationYn": {
            "type": "string",
            "nullable": true
          },
          "medicationDetails": {
            "type": "string",
            "nullable": true
          },
          "referralSource": {
            "type": "string",
            "nullable": true
          },
          "referralSourceOther": {
            "type": "string",
            "nullable": true
          },
          "passportUpload": {
            "type": "string",
            "nullable": true
          },
          "passportUpload2": {
            "type": "string",
            "nullable": true
          },
          "passportUpload3": {
            "type": "string",
            "nullable": true
          },
          "report1": {
            "type": "string",
            "nullable": true
          },
          "officialDiagnosisUpload": {
            "type": "string",
            "nullable": true
          },
          "terms": {
            "type": "boolean",
            "nullable": true
          },
          "nhsNumber": {
            "type": "string",
            "nullable": true
          },
          "gp": {
            "type": "string",
            "nullable": true
          },
          "healthFImmunisations": {
            "type": "string",
            "nullable": true
          },
          "healthFConsent": {
            "type": "string",
            "nullable": true
          },
          "previouslyApplied": {
            "type": "string",
            "nullable": true
          },
          "sixthFormSubjectChoices": {
            "type": "string",
            "nullable": true
          },
          "currentSchool": {
            "type": "string",
            "nullable": true
          },
          "currentSchoolOther": {
            "type": "string",
            "nullable": true
          },
          "tourConsideringBoarding": {
            "type": "string",
            "nullable": true
          },
          "tourRegisteredYn": {
            "type": "string",
            "nullable": true
          },
          "financialAid": {
            "type": "string",
            "nullable": true
          },
          "sizeOfParty": {
            "type": "string",
            "nullable": true
          },
          "tourAccessRequirement": {
            "type": "string",
            "nullable": true
          },
          "tourDietaryRequirements": {
            "type": "string",
            "nullable": true
          },
          "musicLessons": {
            "type": "string",
            "nullable": true
          },
          "priorSchoolLocation": {
            "type": "string",
            "nullable": true
          },
          "chinaHk": {
            "type": "string",
            "nullable": true
          },
          "priorSchoolCountry": {
            "type": "string",
            "nullable": true
          },
          "priorSchool": {
            "type": "string",
            "nullable": true
          },
          "priorSchoolHeadteacherName": {
            "type": "string",
            "nullable": true
          },
          "priorSchoolEmail": {
            "type": "string",
            "nullable": true
          },
          "consentFCoCurricularActivities": {
            "type": "string",
            "nullable": true
          },
          "consentFHouseAndYearContact": {
            "type": "string",
            "nullable": true
          },
          "consentFOneToOneLessons": {
            "type": "string",
            "nullable": true
          },
          "consentFAuthorization": {
            "type": "string",
            "nullable": true
          },
          "gsm1FConsent": {
            "type": "boolean",
            "nullable": true
          },
          "cityOfBirth": {
            "type": "string",
            "nullable": true
          },
          "homeTelephone": {
            "type": "string",
            "nullable": true
          },
          "gms1FUkAddress": {
            "type": "string",
            "nullable": true
          },
          "gms1FFirstUkAddress": {
            "type": "string",
            "nullable": true
          },
          "gms1FLeavingDate": {
            "type": "string",
            "nullable": true
          },
          "gms1FFirstCameDate": {
            "type": "string",
            "nullable": true
          },
          "gms1FArmedForcesGp": {
            "type": "string",
            "nullable": true
          },
          "gms1FAddressBeforeEnlisting": {
            "type": "string",
            "nullable": true
          },
          "gms1FAddressBeforeEnlistingPostcode": {
            "type": "string",
            "nullable": true
          },
          "gms1FPersonnelNumber": {
            "type": "string",
            "nullable": true
          },
          "gms1FEnlistmentDate": {
            "type": "string",
            "nullable": true
          },
          "gms1FDischargeDate": {
            "type": "string",
            "nullable": true
          },
          "gms1FDispenseMedicines": {
            "type": "string",
            "nullable": true
          },
          "gms1FPatientSignature": {
            "type": "string",
            "nullable": true
          },
          "gms1FBehalfOfPatientSignature": {
            "type": "string",
            "nullable": true
          },
          "gms1FNhsOrganDonorRegistration": {
            "type": "string",
            "nullable": true
          },
          "gms1FNhsOrganDonorRegistrationSignature": {
            "type": "string",
            "nullable": true
          },
          "gms1FNhsBloodDonorRegistration": {
            "type": "string",
            "nullable": true
          },
          "gms1FNhsBloodDonorRegistrationSignature": {
            "type": "string",
            "nullable": true
          },
          "gms1FDonationAddress": {
            "type": "string",
            "nullable": true
          },
          "gms1FDonationAddressPostcode": {
            "type": "string",
            "nullable": true
          },
          "gms1FNhsEngland": {
            "type": "string",
            "nullable": true
          },
          "learningFLearningStrategies": {
            "type": "string",
            "nullable": true
          },
          "learningFLearningSupportDetail": {
            "type": "string",
            "nullable": true
          },
          "learningFProfessionalReportsUpload": {
            "type": "string",
            "nullable": true
          },
          "shopFAppointment": {
            "type": "string",
            "nullable": true
          },
          "deviceFSuitableDevice": {
            "type": "string",
            "nullable": true
          },
          "lunchFAttendingBuffetLunch": {
            "type": "string",
            "nullable": true
          },
          "tripFMedicalRequirements": {
            "type": "string",
            "nullable": true
          },
          "tripFEmergencyLandlineNumber1": {
            "type": "string",
            "nullable": true
          },
          "tripFEmergencyLandlineNumber2": {
            "type": "string",
            "nullable": true
          },
          "tripFEmergencyMobileNumber1": {
            "type": "string",
            "nullable": true
          },
          "tripFEmergencyMobileNumber2": {
            "type": "string",
            "nullable": true
          },
          "tripFConsent": {
            "type": "string",
            "nullable": true
          },
          "isebApplicantCode": {
            "type": "string",
            "nullable": true
          },
          "isebVerbal": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isebNonVerbal": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isebMaths": {
            "type": "string",
            "nullable": true
          },
          "isebEnglish": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "paymentFPaymentMethod": {
            "type": "string",
            "nullable": true
          },
          "paymentFMonthlyDirectDebitDetails": {
            "type": "string",
            "nullable": true
          },
          "ddMandate": {
            "type": "string",
            "nullable": true
          },
          "paymentFNoEnglishBankAccountDetails": {
            "type": "string",
            "nullable": true
          },
          "axaPppInsOpt": {
            "type": "string",
            "nullable": true
          },
          "axaInsOpt": {
            "type": "string",
            "nullable": true
          },
          "feesRefundSchemeOpt": {
            "type": "string",
            "nullable": true
          },
          "feesRefundOpt": {
            "type": "string",
            "nullable": true
          },
          "ppeSchemeOpt": {
            "type": "string",
            "nullable": true
          },
          "ppeOpt": {
            "type": "string",
            "nullable": true
          },
          "billingContactFirstName": {
            "type": "string",
            "nullable": true
          },
          "billingContactLastName": {
            "type": "string",
            "nullable": true
          },
          "paymentFBillingContactAddress": {
            "type": "string",
            "nullable": true
          },
          "billingContactPhoneNumber": {
            "type": "string",
            "nullable": true
          },
          "billingContactEmailAddress": {
            "type": "string",
            "nullable": true
          },
          "paymentFAdditionalBillingContactFirstName": {
            "type": "string",
            "nullable": true
          },
          "paymentFAdditionalBillingContactSurname": {
            "type": "string",
            "nullable": true
          },
          "paymentFAdditionalBillingContactAddress": {
            "type": "string",
            "nullable": true
          },
          "paymentFAdditionalBillingContactTelephone": {
            "type": "string",
            "nullable": true
          },
          "paymentFAdditionalBillingContactEmail": {
            "type": "string",
            "nullable": true
          },
          "paymentFAdditionalFeePayer": {
            "type": "string",
            "nullable": true
          },
          "paymentFAdditionalInformation": {
            "type": "string",
            "nullable": true
          },
          "religion": {
            "type": "string",
            "nullable": true
          },
          "dietaryRequirementsYn": {
            "type": "string",
            "nullable": true
          },
          "dietaryRequirements": {
            "type": "string",
            "nullable": true
          },
          "foodAllergiesYn": {
            "type": "string",
            "nullable": true
          },
          "foodAllergies": {
            "type": "string",
            "nullable": true
          },
          "doesSonLiveWithBothParents": {
            "type": "string",
            "nullable": true
          },
          "anyOtherRelevantFamilyInfo": {
            "type": "string",
            "nullable": true
          },
          "extraCurricularAchievementsAndInfo": {
            "type": "string",
            "nullable": true
          },
          "additionalInformationAdmissionsPortal": {
            "type": "string",
            "nullable": true
          },
          "mouthguardsFAcknowledgement": {
            "type": "string",
            "nullable": true
          },
          "parentGuardian": {
            "type": "string",
            "nullable": true
          },
          "siblingsInformation": {
            "type": "string",
            "nullable": true
          },
          "feederSchool": {
            "type": "string",
            "nullable": true
          },
          "previousSchools": {
            "type": "string",
            "nullable": true
          },
          "healthInformation": {
            "type": "string",
            "nullable": true
          },
          "musicInstrument": {
            "type": "string",
            "nullable": true
          },
          "agentProfile": {
            "type": "string",
            "nullable": true
          },
          "immunizationRecord": {
            "type": "string",
            "nullable": true
          },
          "lunchFBuffetGuest": {
            "type": "string",
            "nullable": true
          },
          "parentalSignature": {
            "type": "string",
            "nullable": true
          },
          "feederSchoolReferenceForm": {
            "type": "string",
            "nullable": true
          },
          "assessmentDate": {
            "type": "string",
            "nullable": true
          },
          "assessmentTime": {
            "type": "string",
            "nullable": true
          },
          "assessmentTeacher": {
            "type": "string",
            "nullable": true
          },
          "assessmentGroup": {
            "type": "string",
            "nullable": true
          },
          "assessmentInterviewerGrade": {
            "type": "string",
            "nullable": true
          },
          "assessmentInterviewerComments": {
            "type": "string",
            "nullable": true
          },
          "assessmentScienceGrade": {
            "type": "string",
            "nullable": true
          },
          "assessmentScienceComments": {
            "type": "string",
            "nullable": true
          },
          "assessmentDramaGrade": {
            "type": "string",
            "nullable": true
          },
          "assessmentDramaComments": {
            "type": "string",
            "nullable": true
          },
          "additionalAdmissionsComments": {
            "type": "string",
            "nullable": true
          },
          "shortListMathsComments": {
            "type": "string",
            "nullable": true
          },
          "shortListMathsGrade": {
            "type": "string",
            "nullable": true
          },
          "shortListEnglishComments": {
            "type": "string",
            "nullable": true
          },
          "shortListEnglishGrade": {
            "type": "string",
            "nullable": true
          },
          "shortListHeadmasterComments": {
            "type": "string",
            "nullable": true
          },
          "shortListHeadmasterGrade": {
            "type": "string",
            "nullable": true
          },
          "shortlistMathsExam": {
            "type": "string",
            "nullable": true
          },
          "shortlistEnglishExam": {
            "type": "string",
            "nullable": true
          },
          "shortlistDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "shortlistMusicGrade": {
            "type": "string",
            "nullable": true
          },
          "shortlistMusicComments": {
            "type": "string",
            "nullable": true
          },
          "offerDecision": {
            "type": "string",
            "nullable": true
          },
          "pref1Boarder": {
            "type": "string",
            "nullable": true
          },
          "pref2Boarder": {
            "type": "string",
            "nullable": true
          },
          "pref3Boarder": {
            "type": "string",
            "nullable": true
          },
          "pref1DayBoy": {
            "type": "string",
            "nullable": true
          },
          "pref2DayBoy": {
            "type": "string",
            "nullable": true
          },
          "pref3DayBoy": {
            "type": "string",
            "nullable": true
          },
          "houseDateCompleted": {
            "type": "string",
            "nullable": true
          },
          "parentDeceased": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "OpenApplySiblingInformation": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "openApplyId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "attendApply": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "OpenApplyFeederSchool": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "openApplyId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "feederSchoolFeederSchool": {
            "type": "string",
            "nullable": true
          },
          "feederSchoolOther": {
            "type": "string",
            "nullable": true
          },
          "recipientPrefix": {
            "type": "string",
            "nullable": true
          },
          "recipientFirstName": {
            "type": "string",
            "nullable": true
          },
          "recipientLastName": {
            "type": "string",
            "nullable": true
          },
          "recipientEmail": {
            "type": "string",
            "nullable": true
          },
          "feederSchoolCountry": {
            "type": "string",
            "nullable": true
          },
          "feederSchoolLocation": {
            "type": "string",
            "nullable": true
          },
          "feederSchoolHk": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PrivateNote": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "studentType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StudentTypes"
              }
            ]
          },
          "studentIdentifier": {
            "type": "string",
            "nullable": true
          },
          "text": {
            "type": "string",
            "nullable": true
          },
          "addedBy": {
            "type": "string",
            "nullable": true
          },
          "addedOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "misStudent": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Student"
              }
            ]
          },
          "openApplyStudent": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OpenApplyStudent"
              }
            ]
          }
        }
      },
      "StudentTypes": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Mis",
          "OpenApply"
        ],
        "enum": [
          0,
          1
        ]
      },
      "GetOpenApplyStudents_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "DeletePrivateNote_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetPrivateNotes_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "notes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PrivateNote"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetPrivateNotes_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchPrivateNote_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "note": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PrivateNote"
              }
            ]
          }
        }
      },
      "PostPrivateNote_Request": {
        "type": "object",
        "example": {
          "note": {
            "id": 0,
            "studentIdentifier": "",
            "text": "Test Note",
            "addedBy": "test@test.com"
          }
        },
        "additionalProperties": false,
        "properties": {
          "note": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PrivateNote"
              }
            ]
          }
        }
      },
      "GetOneTimeSecrets_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "secrets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetOneTimeSecrets_OneTimeSecretSummary"
            }
          }
        }
      },
      "GetOneTimeSecrets_OneTimeSecretSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "token": {
            "type": "string"
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "viewedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "burnReason": {
            "type": "string",
            "nullable": true
          },
          "burned": {
            "type": "boolean"
          },
          "failedAttempts": {
            "type": "integer",
            "format": "int32"
          },
          "shortLinkBackHalf": {
            "type": "string",
            "nullable": true
          },
          "shareUrl": {
            "type": "string"
          }
        }
      },
      "DeleteOneTimeSecret_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "revoked": {
            "type": "boolean"
          }
        }
      },
      "DeleteOneTimeSecret_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostOneTimeSecret_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "token": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "shortLinkBackHalf": {
            "type": "string",
            "nullable": true
          },
          "shareUrl": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PostOneTimeSecret_Request": {
        "type": "object",
        "example": {
          "iterations": 0,
          "expiresInHours": 24
        },
        "additionalProperties": false,
        "properties": {
          "ciphertext": {
            "type": "string",
            "nullable": true
          },
          "nonce": {
            "type": "string",
            "nullable": true
          },
          "encryptionSalt": {
            "type": "string",
            "nullable": true
          },
          "authSalt": {
            "type": "string",
            "nullable": true
          },
          "iterations": {
            "type": "integer",
            "format": "int32"
          },
          "authKey": {
            "type": "string",
            "nullable": true
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "expiresInHours": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetOneTimeSecretMeta_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "exists": {
            "type": "boolean"
          },
          "burned": {
            "type": "boolean"
          },
          "burnReason": {
            "type": "string",
            "nullable": true
          },
          "viewedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "attemptsRemaining": {
            "type": "integer",
            "format": "int32"
          },
          "encryptionSalt": {
            "type": "string",
            "nullable": true
          },
          "authSalt": {
            "type": "string",
            "nullable": true
          },
          "iterations": {
            "type": "integer",
            "format": "int32"
          },
          "nonce": {
            "type": "string",
            "nullable": true
          },
          "note": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetOneTimeSecretMeta_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostRevealOneTimeSecret_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "revealed": {
            "type": "boolean"
          },
          "ciphertext": {
            "type": "string",
            "nullable": true
          },
          "attemptsRemaining": {
            "type": "integer",
            "format": "int32"
          },
          "burnReason": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostRevealOneTimeSecret_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "authKey": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostSendLaptopLoanEmail_Request": {
        "type": "object",
        "example": {
          "sendToHousemasters": false
        },
        "additionalProperties": false,
        "properties": {
          "sendToHousemasters": {
            "type": "boolean"
          }
        }
      },
      "GetNotionPage_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "html": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetNotionPage_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetAllNotifications_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "notifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NotificationsWithObjects"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "NotificationsWithObjects": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Notification"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "recipientStudent": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Student"
                  }
                ]
              },
              "recipientContact": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Contact"
                  }
                ]
              },
              "recipientStaff": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/StaffMember"
                  }
                ]
              },
              "recipientUser": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/User"
                  }
                ]
              }
            }
          }
        ]
      },
      "Notification": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "recipient": {
            "type": "string",
            "nullable": true
          },
          "sender": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "link": {
            "type": "string",
            "nullable": true
          },
          "isNotification": {
            "type": "boolean"
          },
          "email": {
            "type": "boolean"
          },
          "sent": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "dismissed": {
            "type": "boolean"
          },
          "interruptionLevel": {
            "$ref": "#/components/schemas/InterruptionLevel"
          }
        }
      },
      "InterruptionLevel": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Active",
          "Passive",
          "Time_Sensitive",
          "Critical"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "GetAllNotifications_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetNotificationOptions_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "notificationOptions": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/NotificationOptions"
              }
            ]
          }
        }
      },
      "NotificationOptions": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "identifier"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "identifier": {
            "type": "string",
            "minLength": 1
          },
          "accidentReporting": {
            "type": "boolean",
            "default": true
          },
          "catering": {
            "type": "boolean",
            "default": true
          },
          "detailsChecker": {
            "type": "boolean",
            "default": true
          },
          "leaveTracking": {
            "type": "boolean",
            "default": true
          },
          "parentsEvening": {
            "type": "boolean",
            "default": true
          },
          "pdfDownload": {
            "type": "boolean",
            "default": true
          },
          "professionalDevelopment": {
            "type": "boolean",
            "default": true
          },
          "projectManagement": {
            "type": "boolean",
            "default": true
          },
          "rewards": {
            "type": "boolean",
            "default": true
          },
          "sanctions": {
            "type": "boolean",
            "default": true
          },
          "send": {
            "type": "boolean",
            "default": true
          },
          "studyLeave": {
            "type": "boolean",
            "default": true
          },
          "weekendLeave": {
            "type": "boolean",
            "default": true
          },
          "events": {
            "type": "boolean",
            "default": true
          },
          "externalSpeaker": {
            "type": "boolean",
            "default": true
          },
          "reviewOfResultsForm": {
            "type": "boolean",
            "default": true
          }
        }
      },
      "GetNotifications_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "notifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Notification"
            }
          }
        }
      },
      "GetNotifications_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "DismissNotifications_Response": {
        "type": "object",
        "additionalProperties": false
      },
      "DismissNotifications_Request": {
        "type": "object",
        "example": {
          "notificationId": 0,
          "dismissAll": false
        },
        "additionalProperties": false,
        "properties": {
          "notificationId": {
            "type": "integer",
            "format": "int32"
          },
          "dismissAll": {
            "type": "boolean"
          }
        }
      },
      "PatchNotificationOptions_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "notificationOptions": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/NotificationOptions"
              }
            ]
          }
        }
      },
      "PatchNotificationOptions_Request": {
        "type": "object",
        "example": {
          "notificationOptions": {
            "id": 0,
            "accidentReporting": true,
            "catering": true,
            "detailsChecker": true,
            "leaveTracking": true,
            "parentsEvening": true,
            "pdfDownload": true,
            "professionalDevelopment": true,
            "projectManagement": true,
            "rewards": true,
            "sanctions": true,
            "send": true,
            "studyLeave": true,
            "weekendLeave": true,
            "events": true,
            "externalSpeaker": true,
            "reviewOfResultsForm": true
          }
        },
        "additionalProperties": false,
        "properties": {
          "notificationOptions": {
            "$ref": "#/components/schemas/NotificationOptions"
          }
        }
      },
      "DeleteDevice_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "DeleteDevice_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "token": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetUserDevices_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "devices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetUserDevices_PushDeviceSummary"
            }
          }
        }
      },
      "GetUserDevices_PushDeviceSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "platform": {
            "type": "string",
            "nullable": true
          },
          "provider": {
            "type": "string",
            "nullable": true
          },
          "deviceName": {
            "type": "string",
            "nullable": true
          },
          "environment": {
            "type": "string",
            "nullable": true
          },
          "appVersion": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastSeenAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "active": {
            "type": "boolean"
          },
          "tokenPreview": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetUserDevices_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "RegisterDevice_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "device": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PushDevice"
              }
            ]
          }
        }
      },
      "PushDevice": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "userEmail",
          "platform",
          "provider",
          "token"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "userEmail": {
            "type": "string",
            "minLength": 1
          },
          "platform": {
            "type": "string",
            "minLength": 1
          },
          "provider": {
            "type": "string",
            "minLength": 1
          },
          "token": {
            "type": "string",
            "minLength": 1
          },
          "topic": {
            "type": "string",
            "nullable": true
          },
          "environment": {
            "type": "string",
            "nullable": true
          },
          "deviceName": {
            "type": "string",
            "nullable": true
          },
          "appVersion": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastSeenAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "active": {
            "type": "boolean"
          }
        }
      },
      "RegisterDevice_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "platform": {
            "type": "string",
            "nullable": true
          },
          "provider": {
            "type": "string",
            "nullable": true
          },
          "token": {
            "type": "string",
            "nullable": true
          },
          "topic": {
            "type": "string",
            "nullable": true
          },
          "environment": {
            "type": "string",
            "nullable": true
          },
          "deviceName": {
            "type": "string",
            "nullable": true
          },
          "appVersion": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetMusicTeachers_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "teachers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MusicTeacherDto"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "MusicTeacherDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "instruments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MusicInstrument"
            }
          }
        }
      },
      "GetMusicTeachers_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetMusicLessons_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "lessons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MusicLesson"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetMusicLessons_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "UpdateMusicTeacherInstruments_Request": {
        "type": "object",
        "example": {
          "email": "",
          "instrumentIds": []
        },
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string"
          },
          "instrumentIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          }
        }
      },
      "DeleteMusicEntity_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetMusicStudents_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "students": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MusicStudent"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "MusicStudent": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "nameId": {
            "type": "integer",
            "format": "int32"
          },
          "studentUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "scholar": {
            "type": "boolean"
          },
          "archived": {
            "type": "boolean"
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Student"
              }
            ]
          }
        }
      },
      "GetMusicStudents_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "UpsertMusicStudent_Request": {
        "type": "object",
        "example": {
          "id": 0,
          "nameId": 0,
          "scholar": false
        },
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "nameId": {
            "type": "integer",
            "format": "int32"
          },
          "scholar": {
            "type": "boolean"
          },
          "notes": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetMusicLessonsForStudent_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "lessons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MusicLesson"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetMusicLessonsForStudent_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "UpsertMusicLesson_Request": {
        "type": "object",
        "example": {
          "id": 0,
          "studentNameId": 0,
          "instrumentId": 0,
          "lessons": 0,
          "free": false
        },
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "studentNameId": {
            "type": "integer",
            "format": "int32"
          },
          "teacherEmail": {
            "type": "string",
            "nullable": true
          },
          "instrumentId": {
            "type": "integer",
            "format": "int32"
          },
          "lessons": {
            "type": "integer",
            "format": "int32"
          },
          "free": {
            "type": "boolean"
          },
          "notes": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetInstruments_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "instruments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MusicInstrument"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "UpsertMusicInstrument_Request": {
        "type": "object",
        "example": {
          "id": 0,
          "orchestralOrder": 1000
        },
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "orchestralOrder": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetMusicImportCandidates_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "candidates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MusicImportCandidateDto"
            }
          },
          "unresolvedPupils": {
            "type": "integer",
            "format": "int32"
          },
          "declinedPupils": {
            "type": "integer",
            "format": "int32"
          },
          "otherYearPupils": {
            "type": "integer",
            "format": "int32"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "MusicImportCandidateDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "openApplyId": {
            "type": "integer",
            "format": "int32"
          },
          "upi": {
            "type": "string",
            "format": "guid"
          },
          "studentNameId": {
            "type": "integer",
            "format": "int32"
          },
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Student"
              }
            ]
          },
          "openApplyName": {
            "type": "string",
            "nullable": true
          },
          "openApplyStatus": {
            "type": "string",
            "nullable": true
          },
          "enrollmentYear": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "wantsLessons": {
            "type": "string",
            "nullable": true
          },
          "oneToOneConsent": {
            "type": "string",
            "nullable": true
          },
          "instrument": {
            "type": "string",
            "nullable": true
          },
          "instGrade": {
            "type": "string",
            "nullable": true
          },
          "instExperience": {
            "type": "string",
            "nullable": true
          },
          "matchedInstrumentId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "matchedInstrumentDescription": {
            "type": "string",
            "nullable": true
          },
          "alreadyImported": {
            "type": "boolean"
          }
        }
      },
      "GetMusicImportCandidates_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "ImportMusicLessons_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "lessonsCreated": {
            "type": "integer",
            "format": "int32"
          },
          "studentsCreated": {
            "type": "integer",
            "format": "int32"
          },
          "skipped": {
            "type": "integer",
            "format": "int32"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ImportMusicLessons_Request": {
        "type": "object",
        "example": {
          "items": []
        },
        "additionalProperties": false,
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ImportMusicLessons_Request_Item"
            }
          }
        }
      },
      "ImportMusicLessons_Request_Item": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "upi": {
            "type": "string",
            "format": "guid"
          },
          "instrumentId": {
            "type": "integer",
            "format": "int32"
          },
          "lessons": {
            "type": "integer",
            "format": "int32"
          },
          "free": {
            "type": "boolean"
          },
          "notes": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "DeleteModule_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetModules_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "modules": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Module"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "Module": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "page": {
            "type": "string"
          },
          "icon": {
            "type": "string"
          },
          "permissions": {
            "type": "string"
          },
          "main": {
            "type": "boolean"
          },
          "search": {
            "type": "boolean"
          },
          "hidden": {
            "type": "boolean"
          },
          "parentPage": {
            "type": "string",
            "nullable": true
          },
          "checkStudent": {
            "type": "boolean"
          },
          "site": {
            "type": "string"
          },
          "showDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "hideDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "allowWhileImpersonating": {
            "type": "boolean"
          },
          "iconName": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "featureSet": {
            "type": "string",
            "nullable": true
          },
          "showForStudents": {
            "type": "boolean"
          },
          "showForLeavers": {
            "type": "boolean"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "permissionList": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "GetModules_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetModulesForStudent_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "modules": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Module"
            }
          },
          "disabledFeatureSets": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetModulesForStudent_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchModule_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "module": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Module"
              }
            ]
          }
        }
      },
      "PostModule_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "module": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Module"
              }
            ]
          }
        }
      },
      "GetModulePermissions_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "modulePermissions": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ModulePermissions"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ModulePermissions": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "guids": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "groupsList": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ModulePermissionsGroups"
            }
          }
        }
      },
      "ModulePermissionsGroups": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "permissionsId",
          "name",
          "guid"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "permissionsId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "guid": {
            "type": "string",
            "minLength": 1
          }
        }
      },
      "GetModulePermissions_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchModulePermission_Request": {
        "type": "object",
        "example": {
          "toRemove": []
        },
        "additionalProperties": false,
        "properties": {
          "permission": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ModulePermissions"
              }
            ]
          },
          "toRemove": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ModulePermissionsGroups"
            }
          }
        }
      },
      "PostModulePermission_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "permission": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ModulePermissions"
              }
            ]
          }
        }
      },
      "GetDirectReports_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MicrosoftUser"
            }
          }
        }
      },
      "GetEvents_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "events": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MicrosoftEvent"
            }
          },
          "allDayEvents": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MicrosoftEvent"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "MicrosoftEvent": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "@odata.etag": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastModifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "changeKey": {
            "type": "string",
            "nullable": true
          },
          "categories": {
            "type": "array",
            "nullable": true,
            "items": {}
          },
          "transactionId": {
            "nullable": true
          },
          "originalStartTimeZone": {
            "type": "string",
            "nullable": true
          },
          "originalEndTimeZone": {
            "type": "string",
            "nullable": true
          },
          "uid": {
            "type": "string",
            "nullable": true
          },
          "reminderMinutesBeforeStart": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "isReminderOn": {
            "type": "boolean"
          },
          "hasAttachments": {
            "type": "boolean"
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "bodyPreview": {
            "type": "string",
            "nullable": true
          },
          "importance": {
            "type": "string",
            "nullable": true
          },
          "sensitivity": {
            "type": "string",
            "nullable": true
          },
          "isAllDay": {
            "type": "boolean"
          },
          "isCancelled": {
            "type": "boolean"
          },
          "isOrganizer": {
            "type": "boolean"
          },
          "responseRequested": {
            "type": "boolean"
          },
          "seriesMasterId": {
            "type": "string",
            "nullable": true
          },
          "showAs": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "webLink": {
            "type": "string",
            "nullable": true
          },
          "onlineMeetingUrl": {
            "nullable": true
          },
          "isOnlineMeeting": {
            "type": "boolean"
          },
          "onlineMeetingProvider": {
            "type": "string",
            "nullable": true
          },
          "allowNewTimeProposals": {
            "type": "boolean"
          },
          "occurrenceId": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          },
          "hideAttendees": {
            "type": "boolean"
          },
          "responseStatus": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ResponseStatus"
              }
            ]
          },
          "body": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Body"
              }
            ]
          },
          "start": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/DateObject"
              }
            ]
          },
          "end": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/DateObject"
              }
            ]
          },
          "location": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Location"
              }
            ]
          },
          "locations": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Location"
            }
          },
          "recurrence": {
            "nullable": true
          },
          "attendees": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Attendee"
            }
          },
          "organizer": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Organizer"
              }
            ]
          },
          "onlineMeeting": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OnlineMeeting"
              }
            ]
          },
          "extensions": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Extension"
            }
          }
        }
      },
      "ResponseStatus": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "response": {
            "type": "string",
            "nullable": true
          },
          "time": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "Body": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "contentType": {
            "type": "string",
            "nullable": true
          },
          "content": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "DateObject": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "dateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "timeZone": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Location": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "locationType": {
            "type": "string",
            "nullable": true
          },
          "uniqueId": {
            "type": "string",
            "nullable": true
          },
          "uniqueIdType": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ]
          },
          "coordinates": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Coordinates"
              }
            ]
          }
        }
      },
      "Address": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "street": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "type": "string",
            "nullable": true
          },
          "countryOrRegion": {
            "type": "string",
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Coordinates": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "latitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        }
      },
      "Attendee": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ResponseStatus"
              }
            ]
          },
          "emailAddress": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/EmailAddress"
              }
            ]
          }
        }
      },
      "EmailAddress": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Organizer": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "emailAddress": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/EmailAddress"
              }
            ]
          }
        }
      },
      "OnlineMeeting": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "joinUrl": {
            "type": "string",
            "format": "uri",
            "nullable": true
          }
        }
      },
      "Extension": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "@odata.type": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "extensionName": {
            "type": "string",
            "nullable": true
          },
          "module": {
            "type": "string",
            "nullable": true
          },
          "moduleId": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetEvents_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetGroupMembers_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MicrosoftUser"
            }
          }
        }
      },
      "GetGroupMembers_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetGroups_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MicrosoftGroup"
            }
          }
        }
      },
      "GetGroups_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetProfileEvents_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "todayEvents": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MicrosoftEvent"
            }
          },
          "tomorrowEvents": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MicrosoftEvent"
            }
          },
          "allDayEvents": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MicrosoftEvent"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetSearchStaff_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "staff": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MicrosoftUser"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetSearchStaff_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "UserPhoto_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "userPhoto": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "UserPhoto_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "emailAddress": {
            "type": "string",
            "nullable": true
          },
          "objectType": {
            "type": "string",
            "nullable": true
          },
          "size": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostUpdateContacts_Request": {
        "type": "object",
        "example": {
          "update": true
        },
        "additionalProperties": false,
        "properties": {
          "update": {
            "type": "boolean"
          }
        }
      },
      "GetMySubjects_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "subjects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HodSubjectDto"
            }
          }
        }
      },
      "HodSubjectDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "subjectId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "schoolReportPosition": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "GetSubjectSetsLookup_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sets": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/SubjectSetDto"
            }
          }
        }
      },
      "SubjectSetDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "academicYear": {
            "type": "integer",
            "format": "int32"
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "inUse": {
            "type": "boolean"
          },
          "setCode": {
            "type": "string",
            "nullable": true
          },
          "codeOnly": {
            "type": "string",
            "nullable": true
          },
          "room": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "subjectDescription": {
            "type": "string",
            "nullable": true
          },
          "tutor1": {
            "type": "string",
            "nullable": true
          },
          "tutor2": {
            "type": "string",
            "nullable": true
          },
          "tutor3": {
            "type": "string",
            "nullable": true
          },
          "tutor1SchoolReports": {
            "type": "boolean"
          },
          "tutor2SchoolReports": {
            "type": "boolean"
          },
          "tutor3SchoolReports": {
            "type": "boolean"
          },
          "tutor1Staff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StaffLite"
              }
            ]
          },
          "tutor2Staff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StaffLite"
              }
            ]
          },
          "tutor3Staff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StaffLite"
              }
            ]
          }
        }
      },
      "StaffLite": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "staffId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "GetSubjectSetsLookup_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetTutorGroupsLookup_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "tutorGroups": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/TutorGroupDto"
            }
          }
        }
      },
      "TutorGroupDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "academicYear": {
            "type": "integer",
            "format": "int32"
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "yearCode": {
            "type": "string",
            "nullable": true
          },
          "inUseString": {
            "type": "string",
            "nullable": true
          },
          "tutor": {
            "type": "string",
            "nullable": true
          },
          "tutorCode": {
            "type": "string",
            "nullable": true
          },
          "tutorPreferredName": {
            "type": "string",
            "nullable": true
          },
          "tutorSurname": {
            "type": "string",
            "nullable": true
          },
          "tutorStaffId": {
            "type": "integer",
            "format": "int32"
          },
          "tutorStaff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StaffLite"
              }
            ]
          }
        }
      },
      "GetTutorGroupsLookup_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetLessonCoverAssignments_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "lessonCoverAssignments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LessonCoverAssignment"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "LessonCoverAssignment": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "lessonCoverFormId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "lessonId": {
            "type": "string",
            "format": "guid"
          },
          "lesson": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Lesson"
              }
            ]
          },
          "assignedToUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "assignedTo": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StaffMember"
              }
            ]
          },
          "assignedByUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "assignedBy": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StaffMember"
              }
            ]
          },
          "assignedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "coverNeeded": {
            "type": "boolean"
          },
          "eventId": {
            "type": "string",
            "nullable": true
          },
          "externalCover": {
            "type": "boolean"
          }
        }
      },
      "GetLessonCoverAssignments_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetLessonCover_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "lessonCoverForms": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/LessonCoverForm"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "LessonCoverForm": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "lessonCoverFormId": {
            "type": "string",
            "format": "guid"
          },
          "forStaffUpi": {
            "type": "string",
            "format": "guid"
          },
          "forStaff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StaffMember"
              }
            ]
          },
          "startDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "endDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "reason": {
            "type": "string",
            "maxLength": 255
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "createdByUpi": {
            "type": "string",
            "format": "guid"
          },
          "createdBy": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StaffMember"
              }
            ]
          },
          "academicYearId": {
            "type": "string",
            "format": "guid"
          },
          "academicYear": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AcademicYear"
              }
            ]
          },
          "assignments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LessonCoverAssignment"
            }
          },
          "showToUser": {
            "type": "boolean"
          }
        }
      },
      "AcademicYear": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "academicYearId": {
            "type": "string",
            "format": "guid"
          },
          "misId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "code": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "inUse": {
            "type": "boolean"
          },
          "tense": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "current": {
            "type": "boolean"
          },
          "nominatedCurrent": {
            "type": "boolean"
          },
          "start": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "end": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "description": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          }
        }
      },
      "GetLessonCover_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetLessonCoverTeachersAll_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "teachers": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/LessonCoverTeacher"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "LessonCoverTeacher": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "staffMember": {
            "$ref": "#/components/schemas/StaffMember"
          },
          "scheduledLesson": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LessonCoverAssignment"
              }
            ]
          },
          "timetable": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/LessonCoverAssignment"
            }
          },
          "lessonsCovered": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/LessonCoverAssignment"
            }
          },
          "coveredLessons": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/LessonCoverAssignment"
            }
          }
        }
      },
      "GetLessonCoverTeachersAll_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetLessonCoverTeachers_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "teachers": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/LessonCoverTeacher"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetLessonCoverTeachers_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchLessonCoverForm_Request": {
        "type": "object",
        "example": {
          "form": {
            "lessonCoverFormId": "00000000-0000-0000-0000-000000000000",
            "forStaffUpi": "00000000-0000-0000-0000-000000000000",
            "startDateTime": "0001-01-01T00:00:00",
            "endDateTime": "0001-01-01T00:00:00",
            "reason": "Reason",
            "created": "0001-01-01T00:00:00",
            "createdByUpi": "00000000-0000-0000-0000-000000000000",
            "academicYearId": "00000000-0000-0000-0000-000000000000",
            "assignments": [],
            "showToUser": false
          }
        },
        "additionalProperties": false,
        "properties": {
          "form": {
            "$ref": "#/components/schemas/LessonCoverForm"
          }
        }
      },
      "PostLessonCoverForm_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "form": {
            "$ref": "#/components/schemas/LessonCoverForm"
          }
        }
      },
      "PostLessonCoverForm_Request": {
        "type": "object",
        "example": {
          "form": {
            "lessonCoverFormId": "00000000-0000-0000-0000-000000000000",
            "forStaffUpi": "00000000-0000-0000-0000-000000000000",
            "startDateTime": "0001-01-01T00:00:00",
            "endDateTime": "0001-01-01T00:00:00",
            "reason": "Reason",
            "created": "0001-01-01T00:00:00",
            "createdByUpi": "00000000-0000-0000-0000-000000000000",
            "academicYearId": "00000000-0000-0000-0000-000000000000",
            "assignments": [
              {
                "lessonId": "6fb2d437-fe48-44ea-8447-7250be0357ec",
                "coverNeeded": false,
                "externalCover": false
              }
            ],
            "showToUser": false
          }
        },
        "additionalProperties": false,
        "properties": {
          "form": {
            "$ref": "#/components/schemas/LessonCoverForm"
          }
        }
      },
      "DeleteLeaveTracker_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetLeaveTrackers_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "trackers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveTracker"
            }
          },
          "isAdmin": {
            "type": "boolean"
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveGroupMemberCoverage"
            }
          },
          "currentYear": {
            "type": "integer",
            "format": "int32"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "LeaveTracker": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "entitlement": {
            "type": "number",
            "format": "double"
          },
          "carriedOver": {
            "type": "number",
            "format": "double"
          },
          "taken": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "lieuDaysTaken": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "year": {
            "type": "integer",
            "format": "int32"
          },
          "employeeEmail": {
            "type": "string"
          },
          "employeeName": {
            "type": "string"
          },
          "department": {
            "type": "string"
          },
          "isCurrent": {
            "type": "boolean"
          },
          "toilRequested": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "LeaveGroupMemberCoverage": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "isAdmin": {
            "type": "boolean"
          },
          "years": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          }
        }
      },
      "GetLeaveTrackers_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetUserLeaveTrackers_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "trackers": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/LeaveTracker"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetUserLeaveTrackers_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchLeaveTracker_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "tracker": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LeaveTracker"
              }
            ]
          }
        }
      },
      "PostLeaveTracker_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "tracker": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LeaveTracker"
              }
            ]
          }
        }
      },
      "PostRollYearOver_Request": {
        "type": "object",
        "example": {
          "oldYear": 0,
          "newYear": 0,
          "maxCarryOver": 0,
          "groupId": 0
        },
        "additionalProperties": false,
        "properties": {
          "oldYear": {
            "type": "integer",
            "format": "int32"
          },
          "newYear": {
            "type": "integer",
            "format": "int32"
          },
          "maxCarryOver": {
            "type": "integer",
            "format": "int32"
          },
          "groupId": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "DeleteToilRequest_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostToilRequest_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "toilRequest": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LeaveToilRequest"
              }
            ]
          }
        }
      },
      "LeaveToilRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "typeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "hours": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "employeeEmail": {
            "type": "string",
            "nullable": true
          },
          "employeeName": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "workId": {
            "type": "string",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "type": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LeaveToilType"
              }
            ]
          }
        }
      },
      "LeaveToilType": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "rate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "hidden": {
            "type": "boolean"
          },
          "groupId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "GetToilTypes_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveToilType"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetToilTypes_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchToilType_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "type": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LeaveToilType"
              }
            ]
          }
        }
      },
      "PostToilType_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "type": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LeaveToilType"
              }
            ]
          }
        }
      },
      "DeleteLeaveRequest_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetDetailsForApproval_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "leaveRequest": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LeaveRequest"
              }
            ]
          },
          "leaveTracker": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LeaveTracker"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetDetailsForApproval_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetGroupLeaveRequests_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "requests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveRequest"
            }
          },
          "toilRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveToilRequest"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetGroupLeaveRequests_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetLeaveRequests_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "requests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveRequest"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetLeaveRequests_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetLeaveToday_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "people": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveTodayPerson"
            }
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "LeaveTodayPerson": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "requestId": {
            "type": "integer",
            "format": "int32"
          },
          "employeeName": {
            "type": "string"
          },
          "employeeEmail": {
            "type": "string"
          },
          "department": {
            "type": "string"
          },
          "leaveType": {
            "type": "string"
          },
          "sDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "eDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isTeamMember": {
            "type": "boolean"
          }
        }
      },
      "GetRequestsToApprove_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "requests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveRequest"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetRequestsToApprove_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetTeamLeaveRequests_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "requests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveRequest"
            }
          },
          "toilRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveToilRequest"
            }
          },
          "team": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveTeamMember"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "LeaveTeamMember": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "GetTeamLeaveRequests_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetUserLeaveRequests_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "requests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveRequest"
            }
          },
          "toilRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveToilRequest"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetUserLeaveRequests_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchUpdateLeaveRequest_Request": {
        "type": "object",
        "example": {
          "id": 0
        },
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "comment": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostLeaveForEmployee_Request": {
        "type": "object",
        "example": {
          "employeeEmail": "",
          "leaveType": "Annual Leave",
          "sDateTime": "0001-01-01T00:00:00",
          "eDateTime": "0001-01-01T00:00:00",
          "numOfDays": 0.0
        },
        "additionalProperties": false,
        "properties": {
          "employeeEmail": {
            "type": "string"
          },
          "leaveType": {
            "type": "string"
          },
          "sDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "eDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "numOfDays": {
            "type": "number",
            "format": "double"
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostLeaveRequest_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "leaveRequest": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LeaveRequest"
              }
            ]
          }
        }
      },
      "GetLeaveGroupOverview_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "groupName": {
            "type": "string"
          },
          "year": {
            "type": "integer",
            "format": "int32"
          },
          "currentYear": {
            "type": "integer",
            "format": "int32"
          },
          "memberCount": {
            "type": "integer",
            "format": "int32"
          },
          "missingThisYear": {
            "type": "integer",
            "format": "int32"
          },
          "missingNextYear": {
            "type": "integer",
            "format": "int32"
          },
          "totalAllowance": {
            "type": "number",
            "format": "double"
          },
          "totalTaken": {
            "type": "number",
            "format": "double"
          },
          "totalRemaining": {
            "type": "number",
            "format": "double"
          },
          "expectedTakenByNow": {
            "type": "number",
            "format": "double"
          },
          "membersBehindPace": {
            "type": "integer",
            "format": "int32"
          },
          "membersFullyUsed": {
            "type": "integer",
            "format": "int32"
          },
          "pendingRequests": {
            "type": "integer",
            "format": "int32"
          },
          "offToday": {
            "type": "integer",
            "format": "int32"
          },
          "offThisWeek": {
            "type": "integer",
            "format": "int32"
          },
          "daysBookedAhead": {
            "type": "number",
            "format": "double"
          },
          "toilAccrued": {
            "type": "number",
            "format": "double"
          },
          "toilTaken": {
            "type": "number",
            "format": "double"
          },
          "byMonth": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveMonthPoint"
            }
          },
          "byType": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveTypeBucket"
            }
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveMemberOverview"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "LeaveMonthPoint": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "month": {
            "type": "string",
            "format": "date-time"
          },
          "days": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "LeaveTypeBucket": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "leaveType": {
            "type": "string"
          },
          "days": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "LeaveMemberOverview": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "hasTracker": {
            "type": "boolean"
          },
          "hasNextYear": {
            "type": "boolean"
          },
          "entitlement": {
            "type": "number",
            "format": "double"
          },
          "carriedOver": {
            "type": "number",
            "format": "double"
          },
          "allowance": {
            "type": "number",
            "format": "double"
          },
          "taken": {
            "type": "number",
            "format": "double"
          },
          "remaining": {
            "type": "number",
            "format": "double"
          },
          "expectedTakenByNow": {
            "type": "number",
            "format": "double"
          },
          "toilAccrued": {
            "type": "number",
            "format": "double"
          },
          "toilTaken": {
            "type": "number",
            "format": "double"
          },
          "pendingRequests": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetLeaveGroupOverview_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetLeaveGroups_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveGroup"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "LeaveGroup": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "isActive": {
            "type": "boolean"
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveGroupMember"
            }
          },
          "toilTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveToilType"
            }
          }
        }
      },
      "LeaveGroupMember": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "groupId": {
            "type": "integer",
            "format": "int32"
          },
          "employeeEmail": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "isAdmin": {
            "type": "boolean"
          },
          "employee": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MicrosoftUser"
              }
            ]
          }
        }
      },
      "GetLeaveGroups_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetUserLeaveGroups_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveGroupWithAdmin"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "LeaveGroupWithAdmin": {
        "allOf": [
          {
            "$ref": "#/components/schemas/LeaveGroup"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "isAdmin": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "GetUserLeaveGroups_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchLeaveGroup_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "group": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LeaveGroup"
              }
            ]
          }
        }
      },
      "PostLeaveGroup_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "group": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LeaveGroup"
              }
            ]
          }
        }
      },
      "DeleteNotice_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetNotices_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "inAppNotices": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/InAppNotice"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "InAppNotice": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "title": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "permissions": {
            "type": "string",
            "maxLength": 320,
            "nullable": true
          },
          "show": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "hide": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "permissionList": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "GetNotices_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchNotice_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "inAppNotice": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/InAppNotice"
              }
            ]
          }
        }
      },
      "PostNotice_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "inAppNotice": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/InAppNotice"
              }
            ]
          }
        }
      },
      "DeleteHouseTour_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetHouseTourDetail_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "booking": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/HouseTourBookingDto"
              }
            ]
          },
          "applicant": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OpenApplyStudent"
              }
            ]
          },
          "parents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OpenApplyParentGuardian"
            }
          },
          "otherBookings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HouseTourBookingDto"
            }
          },
          "sameSchoolPupils": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Student"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "HouseTourBookingDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "studentId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "parentId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "tourDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "housemaster": {
            "type": "string",
            "nullable": true
          },
          "house": {
            "type": "string",
            "nullable": true
          },
          "comments": {
            "type": "string",
            "nullable": true
          },
          "system": {
            "type": "string",
            "nullable": true
          },
          "bookingType": {
            "type": "string",
            "nullable": true
          },
          "virtualLink": {
            "type": "string",
            "nullable": true
          },
          "eventId": {
            "type": "string",
            "nullable": true
          },
          "parentEventId": {
            "type": "string",
            "nullable": true
          },
          "dateAdded": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "applicantName": {
            "type": "string",
            "nullable": true
          },
          "entryYear": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "previousSchool": {
            "type": "string",
            "nullable": true
          },
          "photo": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "OpenApplyParentGuardian": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "studentId": {
            "type": "integer",
            "format": "int32"
          },
          "openApplyId": {
            "type": "integer",
            "format": "int32"
          },
          "serialNumber": {
            "type": "integer",
            "format": "int32"
          },
          "customId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "gender": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "addressIi": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "type": "string",
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "parentRole": {
            "type": "string",
            "nullable": true
          },
          "updatedAt": {
            "type": "string",
            "nullable": true
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "managebacParentId": {
            "type": "string",
            "nullable": true
          },
          "mbId": {
            "type": "string",
            "nullable": true
          },
          "profilePhoto": {
            "type": "string",
            "nullable": true
          },
          "profilePhotoUpdatedAt": {
            "type": "string",
            "nullable": true
          },
          "parentId": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetHouseTourDetail_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetHouseTours_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "bookings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HouseTourBookingDto"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetHouseTours_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetHouseTourSettings_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "settings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HouseTourSetting"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "HouseTourSetting": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "GetHouseTourSettings_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchHouseTourComment_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "comments": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PatchHouseTourSettings_Request": {
        "type": "object",
        "example": {
          "settings": []
        },
        "additionalProperties": false,
        "properties": {
          "settings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HouseTourSetting"
            }
          }
        }
      },
      "GetHouses_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "houses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/House"
            }
          }
        }
      },
      "GetHouses_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "DeleteHouseStaff_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetHouseStaff_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "houseStaff": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HouseStaff"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetHouseStaff_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchHouseStaff_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "houseStaff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/HouseStaff"
              }
            ]
          }
        }
      },
      "PostHouseStaff_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "houseStaff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/HouseStaff"
              }
            ]
          }
        }
      },
      "GetCurrentTerm_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "term": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/TonTerm"
              }
            ]
          },
          "cateringFormCurrentTerm": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "cateringFormOpen": {
            "type": "boolean"
          },
          "termFormCurrentTerm": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "termFormOpen": {
            "type": "boolean"
          },
          "currentTerm": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "TonTerm": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "academicYear": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "yearStart": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "yearEnd": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "terms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TonTermPart"
            }
          },
          "currentTerm": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "TonTermPart": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "termNo": {
            "type": "integer",
            "format": "int32"
          },
          "half1Start": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "half1End": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "half2Start": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "half2End": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "GetTermlyHealthList_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "forms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TermlyHealthForm"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "TermlyHealthForm": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "pupilId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "term": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pupilName": {
            "type": "string",
            "nullable": true
          },
          "pupilHouse": {
            "type": "string",
            "nullable": true
          },
          "pupilYear": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "holiday": {
            "type": "boolean",
            "nullable": true
          },
          "holidayDetails": {
            "type": "string",
            "nullable": true
          },
          "medication": {
            "type": "boolean",
            "nullable": true
          },
          "medicationDetails": {
            "type": "string",
            "nullable": true
          },
          "vaccinations": {
            "type": "boolean",
            "nullable": true
          },
          "vaccinationsDetails": {
            "type": "string",
            "nullable": true
          },
          "infections": {
            "type": "boolean",
            "nullable": true
          },
          "infectionsDetails": {
            "type": "string",
            "nullable": true
          },
          "submitted": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "parentName": {
            "type": "string",
            "nullable": true
          },
          "changes": {
            "type": "boolean",
            "nullable": true
          }
        }
      },
      "GetTermlyHealthHouse_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetTermlyHealthPupil_Response": {
        "allOf": [
          {
            "$ref": "#/components/schemas/TermlyHealthForm"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "GetTermlyHealthPupil_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostTermlyHealth_Request": {
        "allOf": [
          {
            "$ref": "#/components/schemas/TermlyHealthForm"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "GetGoogleBook_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "book": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/GoogleBook"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GoogleBook": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "etag": {
            "type": "string",
            "nullable": true
          },
          "selfLink": {
            "type": "string",
            "nullable": true
          },
          "volumeInfo": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/VolumeInfo"
              }
            ]
          },
          "saleInfo": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SaleInfo"
              }
            ]
          },
          "accessInfo": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AccessInfo"
              }
            ]
          },
          "searchInfo": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SearchInfo"
              }
            ]
          }
        }
      },
      "VolumeInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "title": {
            "type": "string",
            "nullable": true
          },
          "subtitle": {
            "type": "string",
            "nullable": true
          },
          "publisher": {
            "type": "string",
            "nullable": true
          },
          "authors": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "publishedDate": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "industryIdentifiers": {
            "type": "array",
            "nullable": true,
            "items": {
              "nullable": true,
              "oneOf": [
                {
                  "$ref": "#/components/schemas/IndustryIdentifier"
                }
              ]
            }
          },
          "readingModes": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReadingModes"
              }
            ]
          },
          "pageCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "printType": {
            "type": "string",
            "nullable": true
          },
          "categories": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "maturityRating": {
            "type": "string",
            "nullable": true
          },
          "allowAnonLogging": {
            "type": "boolean"
          },
          "contentVersion": {
            "type": "string",
            "nullable": true
          },
          "panelizationSummary": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PanelizationSummary"
              }
            ]
          },
          "imageLinks": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ImageLinks"
              }
            ]
          },
          "language": {
            "type": "string",
            "nullable": true
          },
          "previewLink": {
            "type": "string",
            "nullable": true
          },
          "infoLink": {
            "type": "string",
            "nullable": true
          },
          "canonicalVolumeLink": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "IndustryIdentifier": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "identifier": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ReadingModes": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "text": {
            "type": "boolean"
          },
          "image": {
            "type": "boolean"
          }
        }
      },
      "PanelizationSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "containsEpubBubbles": {
            "type": "boolean"
          },
          "containsImageBubbles": {
            "type": "boolean"
          }
        }
      },
      "ImageLinks": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "smallThumbnail": {
            "type": "string",
            "nullable": true
          },
          "thumbnail": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SaleInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "country": {
            "type": "string",
            "nullable": true
          },
          "saleability": {
            "type": "string",
            "nullable": true
          },
          "isEbook": {
            "type": "boolean"
          },
          "listPrice": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Price"
              }
            ]
          },
          "retailPrice": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Price"
              }
            ]
          },
          "buyLink": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Price": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "amount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "AccessInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "country": {
            "type": "string",
            "nullable": true
          },
          "viewability": {
            "type": "string",
            "nullable": true
          },
          "embeddable": {
            "type": "boolean"
          },
          "publicDomain": {
            "type": "boolean"
          },
          "textToSpeechPermission": {
            "type": "string",
            "nullable": true
          },
          "epub": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Epub"
              }
            ]
          },
          "pdf": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Pdf"
              }
            ]
          },
          "webReaderLink": {
            "type": "string",
            "nullable": true
          },
          "accessViewStatus": {
            "type": "string",
            "nullable": true
          },
          "quoteSharingAllowed": {
            "type": "boolean"
          }
        }
      },
      "Epub": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "isAvailable": {
            "type": "boolean"
          },
          "acsTokenLink": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Pdf": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "isAvailable": {
            "type": "boolean"
          }
        }
      },
      "SearchInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "textSnippet": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetGoogleBook_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetSearchGoogleBooks_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "books": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/GoogleBook"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetSearchGoogleBooks_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetTickets_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "tickets": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Ticket"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "Ticket": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "subject"
        ],
        "properties": {
          "subject": {
            "type": "string",
            "minLength": 1
          },
          "group_id": {
            "nullable": true
          },
          "department_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "sub_category": {
            "type": "string",
            "nullable": true
          },
          "item_category": {
            "nullable": true
          },
          "requester_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "responder_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "due_by": {
            "type": "string",
            "nullable": true
          },
          "fr_escalated": {
            "type": "boolean"
          },
          "deleted": {
            "type": "boolean"
          },
          "spam": {
            "type": "boolean"
          },
          "email_config_id": {
            "nullable": true
          },
          "fwd_emails": {
            "type": "array",
            "nullable": true,
            "items": {}
          },
          "reply_cc_emails": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "cc_emails": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "is_escalated": {
            "type": "boolean"
          },
          "fr_due_by": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "priority": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "status": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Ticket_TicketStatus"
              }
            ]
          },
          "chipStatus": {
            "nullable": true
          },
          "source": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "requested_for_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "to_emails": {
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "description_text": {
            "type": "string",
            "nullable": true
          },
          "custom_fields": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomFields"
              }
            ]
          },
          "workspace_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Attachment"
            }
          },
          "conversations": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Conversation"
            }
          },
          "responder": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Agent"
              }
            ]
          },
          "urgency": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "impact": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "planned_start_date": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "planned_end_date": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "planned_effort": {
            "type": "string",
            "nullable": true
          },
          "stats": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/TicketStats"
              }
            ]
          }
        }
      },
      "Ticket_TicketStatus": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Open",
          "Pending",
          "Resolved",
          "Closed",
          "Reopened",
          "Scheduled",
          "WithThirdParty",
          "PendingChildTickets",
          "ChangePending",
          "ChangeInProgress"
        ],
        "enum": [
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11
        ]
      },
      "CustomFields": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "major_incident_type": {
            "nullable": true
          },
          "business_impact": {
            "nullable": true
          },
          "impacted_locations": {
            "nullable": true
          },
          "no_of_customers_impacted": {
            "nullable": true
          }
        }
      },
      "Attachment": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "content_type": {
            "type": "string",
            "nullable": true
          },
          "size": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "attachment_url": {
            "type": "string",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "Conversation": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "body_text": {
            "type": "string",
            "nullable": true
          },
          "incoming": {
            "type": "boolean"
          },
          "private": {
            "type": "boolean"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updated_at": {
            "type": "string",
            "nullable": true
          },
          "user_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "support_email": {
            "type": "string",
            "nullable": true
          },
          "source": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "ticket_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "to_emails": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "from_email": {
            "type": "string",
            "nullable": true
          },
          "cc_emails": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "bcc_emails": {
            "type": "array",
            "nullable": true,
            "items": {}
          },
          "attachments": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Attachment"
            }
          },
          "notify_emails": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "requester": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Requester"
              }
            ]
          }
        }
      },
      "Requester": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "active": {
            "type": "boolean"
          },
          "address": {
            "nullable": true
          },
          "background_information": {
            "nullable": true
          },
          "can_see_all_changes_from_associated_departments": {
            "type": "boolean"
          },
          "can_see_all_tickets_from_associated_departments": {
            "type": "boolean"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "custom_fields": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomFields"
              }
            ]
          },
          "department_ids": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "integer",
              "format": "int64"
            }
          },
          "department_names": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "external_id": {
            "type": "string",
            "nullable": true
          },
          "first_name": {
            "type": "string",
            "nullable": true
          },
          "has_logged_in": {
            "type": "boolean"
          },
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "is_agent": {
            "type": "boolean"
          },
          "job_title": {
            "type": "string",
            "nullable": true
          },
          "language": {
            "type": "string",
            "nullable": true
          },
          "last_name": {
            "type": "string",
            "nullable": true
          },
          "location_id": {
            "nullable": true
          },
          "location_name": {
            "nullable": true
          },
          "mobile_phone_number": {
            "nullable": true
          },
          "primary_email": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "reporting_manager_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "secondary_emails": {
            "type": "array",
            "nullable": true,
            "items": {}
          },
          "time_format": {
            "type": "string",
            "nullable": true
          },
          "time_zone": {
            "type": "string",
            "nullable": true
          },
          "updated_at": {
            "type": "string",
            "nullable": true
          },
          "vip_user": {
            "type": "boolean"
          },
          "work_phone_number": {
            "type": "string",
            "nullable": true
          },
          "work_schedule_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "Agent": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "active": {
            "type": "boolean"
          },
          "address": {
            "nullable": true
          },
          "auto_assign_status_changed_at": {
            "type": "string",
            "nullable": true
          },
          "auto_assign_tickets": {
            "type": "boolean"
          },
          "background_information": {
            "nullable": true
          },
          "can_see_all_tickets_from_associated_departments": {
            "type": "boolean"
          },
          "created_at": {
            "type": "string",
            "nullable": true
          },
          "custom_fields": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomFields"
              }
            ]
          },
          "department_ids": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          },
          "department_names": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "external_id": {
            "type": "string",
            "nullable": true
          },
          "first_name": {
            "type": "string",
            "nullable": true
          },
          "has_logged_in": {
            "type": "boolean"
          },
          "id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "job_title": {
            "type": "string",
            "nullable": true
          },
          "language": {
            "type": "string",
            "nullable": true
          },
          "last_active_at": {
            "type": "string",
            "nullable": true
          },
          "last_login_at": {
            "type": "string",
            "nullable": true
          },
          "last_name": {
            "type": "string",
            "nullable": true
          },
          "location_id": {
            "nullable": true
          },
          "location_name": {
            "nullable": true
          },
          "mobile_phone_number": {
            "nullable": true
          },
          "occasional": {
            "type": "boolean"
          },
          "reporting_manager_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "role_ids": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          },
          "roles": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Role"
            }
          },
          "scopes": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomFields"
              }
            ]
          },
          "scoreboard_level_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "scoreboard_points": {
            "nullable": true
          },
          "signature": {
            "type": "string",
            "nullable": true
          },
          "time_format": {
            "type": "string",
            "nullable": true
          },
          "time_zone": {
            "type": "string",
            "nullable": true
          },
          "updated_at": {
            "type": "string",
            "nullable": true
          },
          "vip_user": {
            "type": "boolean"
          },
          "work_phone_number": {
            "type": "string",
            "nullable": true
          },
          "work_schedule_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "workspace_ids": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          },
          "workspace_info": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/WorkspaceInfo"
            }
          },
          "group_ids": {
            "type": "array",
            "nullable": true,
            "items": {
              "nullable": true
            }
          },
          "member_of": {
            "type": "array",
            "nullable": true,
            "items": {
              "nullable": true
            }
          },
          "observer_of": {
            "type": "array",
            "nullable": true,
            "items": {
              "nullable": true
            }
          }
        }
      },
      "Role": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "role_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "assignment_scope": {
            "type": "string",
            "nullable": true
          },
          "groups": {
            "type": "array",
            "nullable": true,
            "items": {}
          }
        }
      },
      "WorkspaceInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "workspace_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "scoreboard_level_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "points": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "TicketStats": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "agent_responded_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "requester_responded_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "first_responded_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "status_updated_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "reopened_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "resolved_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "closed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "pending_since": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "GetTickets_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostTicket_Request": {
        "type": "object",
        "example": {
          "files": []
        },
        "additionalProperties": false,
        "properties": {
          "ticket": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Ticket"
              }
            ]
          },
          "files": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/CoreFile"
            }
          }
        }
      },
      "CoreFile": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "contentType": {
            "type": "string"
          },
          "content": {
            "type": "string",
            "format": "byte"
          },
          "tags": {
            "type": "string",
            "nullable": true
          },
          "uploadedDate": {
            "type": "string",
            "format": "date-time"
          },
          "uploadedBy": {
            "type": "string"
          },
          "anyoneDownload": {
            "type": "boolean"
          },
          "lastModified": {
            "type": "string",
            "format": "date-time"
          },
          "size": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "viewInBrowser": {
            "type": "string",
            "nullable": true
          },
          "downloadInBrowser": {
            "type": "string",
            "nullable": true
          },
          "tempId": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostTicketReply_Request": {
        "type": "object",
        "example": {
          "files": [],
          "ticketId": 0,
          "userId": 0
        },
        "additionalProperties": false,
        "properties": {
          "files": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/CoreFile"
            }
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "ticketId": {
            "type": "integer",
            "format": "int64"
          },
          "userId": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "GetFreePeriodsForStaff_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "freePeriods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FreePeriodStaffView"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "FreePeriodStaffView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "periodName": {
            "type": "string",
            "nullable": true
          },
          "dayName": {
            "type": "string",
            "nullable": true
          },
          "periodNumber": {
            "type": "integer",
            "format": "int32"
          },
          "dayNumber": {
            "type": "integer",
            "format": "int32"
          },
          "staff": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StaffMember"
            }
          }
        }
      },
      "GetFreePeriodsForStaff_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetFreePeriodsForStudents_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "freePeriods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FreePeriodStudentView"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "FreePeriodStudentView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "periodName": {
            "type": "string",
            "nullable": true
          },
          "dayName": {
            "type": "string",
            "nullable": true
          },
          "periodNumber": {
            "type": "integer",
            "format": "int32"
          },
          "dayNumber": {
            "type": "integer",
            "format": "int32"
          },
          "students": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Student"
            }
          }
        }
      },
      "GetFreePeriodsForStudents_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetFreeRooms_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "freeRooms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FreeRoomPeriodView"
            }
          }
        }
      },
      "FreeRoomPeriodView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "dayName": {
            "type": "string",
            "nullable": true
          },
          "dayNumber": {
            "type": "integer",
            "format": "int32"
          },
          "periodName": {
            "type": "string",
            "nullable": true
          },
          "periodNumber": {
            "type": "integer",
            "format": "int32"
          },
          "rooms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FreeRoomView"
            }
          }
        }
      },
      "FreeRoomView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "location": {
            "type": "string",
            "nullable": true
          },
          "allocationUnreliable": {
            "type": "boolean"
          },
          "allocationNote": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetForms_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "forms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Form"
            }
          }
        }
      },
      "GetForms_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetFireCheckCompliance_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "academicYear": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "houses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FireCheckHouseDto"
            }
          },
          "termPeriods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FireCheckTermPeriodDto"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "FireCheckHouseDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "houseId": {
            "type": "string",
            "format": "guid"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "requiresNightDrill": {
            "type": "boolean"
          },
          "hasHouseStaff": {
            "type": "boolean"
          }
        }
      },
      "FireCheckTermPeriodDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "termId": {
            "type": "string",
            "format": "guid"
          },
          "academicYear": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "shortCode": {
            "type": "string"
          },
          "start": {
            "type": "string",
            "format": "date-time"
          },
          "end": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "weeks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FireCheckWeekDto"
            }
          },
          "dayDrills": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FireCheckCellDto"
            }
          },
          "nightDrills": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FireCheckCellDto"
            }
          },
          "dayDrill": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/FireCheckCellDto"
              }
            ]
          },
          "nightDrill": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/FireCheckCellDto"
              }
            ]
          }
        }
      },
      "FireCheckWeekDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "label": {
            "type": "string"
          },
          "start": {
            "type": "string",
            "format": "date-time"
          },
          "end": {
            "type": "string",
            "format": "date-time"
          },
          "cells": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FireCheckCellDto"
            }
          },
          "state": {
            "type": "string",
            "nullable": true
          },
          "checkedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "submissionId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "FireCheckCellDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "houseId": {
            "type": "string",
            "format": "guid"
          },
          "state": {
            "type": "string"
          },
          "checkedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "submissionId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "GetFireCheckCompliance_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetFireCheckHouse_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "houseId": {
            "type": "string",
            "format": "guid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "requiresNightDrill": {
            "type": "boolean"
          },
          "academicYear": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "termPeriods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FireCheckTermPeriodDto"
            }
          },
          "submissions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FireCheckSubmissionDto"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "FireCheckSubmissionDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "houseId": {
            "type": "string",
            "format": "guid"
          },
          "houseName": {
            "type": "string",
            "nullable": true
          },
          "checkedAt": {
            "type": "string",
            "format": "date-time"
          },
          "extinguishers": {
            "type": "boolean"
          },
          "breakGlass": {
            "type": "boolean"
          },
          "detectors": {
            "type": "boolean"
          },
          "fireDoors": {
            "type": "boolean"
          },
          "fireActionSigns": {
            "type": "boolean"
          },
          "emergencyExits": {
            "type": "boolean"
          },
          "alarmTest": {
            "type": "boolean"
          },
          "drillAwareness": {
            "type": "string",
            "nullable": true
          },
          "drillTiming": {
            "type": "string",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "batchId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "batchSize": {
            "type": "integer",
            "format": "int32"
          },
          "submittedByName": {
            "type": "string",
            "nullable": true
          },
          "submittedAt": {
            "type": "string",
            "format": "date-time"
          },
          "amendedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "withdrawn": {
            "type": "boolean"
          },
          "withdrawnAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "weekLabel": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetFireCheckHouse_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetFireCheckHouses_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "houses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FireCheckHouseDto"
            }
          },
          "canSelectMultiple": {
            "type": "boolean"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetFireCheckHouses_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchFireCheckSubmission_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "submission": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/FireCheckSubmissionDto"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PatchFireCheckSubmission_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "checkedAt": {
            "type": "string",
            "format": "date-time"
          },
          "extinguishers": {
            "type": "boolean"
          },
          "breakGlass": {
            "type": "boolean"
          },
          "detectors": {
            "type": "boolean"
          },
          "fireDoors": {
            "type": "boolean"
          },
          "fireActionSigns": {
            "type": "boolean"
          },
          "emergencyExits": {
            "type": "boolean"
          },
          "alarmTest": {
            "type": "boolean"
          },
          "drillAwareness": {
            "type": "string",
            "nullable": true
          },
          "drillTiming": {
            "type": "string",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostFireCheckWithdraw_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "withdrawnCount": {
            "type": "integer",
            "format": "int32"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostFireCheckBatchWithdraw_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostFireCheckSubmission_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "batchId": {
            "type": "string",
            "format": "guid"
          },
          "created": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostFireCheckSubmission_Created"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostFireCheckSubmission_Created": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "submissionId": {
            "type": "integer",
            "format": "int32"
          },
          "houseId": {
            "type": "string",
            "format": "guid"
          },
          "houseName": {
            "type": "string",
            "nullable": true
          },
          "weekLabel": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostFireCheckSubmission_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "houseIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "guid"
            }
          },
          "checkedAt": {
            "type": "string",
            "format": "date-time"
          },
          "extinguishers": {
            "type": "boolean"
          },
          "breakGlass": {
            "type": "boolean"
          },
          "detectors": {
            "type": "boolean"
          },
          "fireDoors": {
            "type": "boolean"
          },
          "fireActionSigns": {
            "type": "boolean"
          },
          "emergencyExits": {
            "type": "boolean"
          },
          "alarmTest": {
            "type": "boolean"
          },
          "drillAwareness": {
            "type": "string",
            "nullable": true
          },
          "drillTiming": {
            "type": "string",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostFireCheckWithdraw_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetFileContent_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "driveItem": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MicrosoftDriveItem"
              }
            ]
          },
          "content": {
            "type": "string",
            "format": "byte",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "MicrosoftDriveItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "createdDateTime": {
            "type": "string",
            "nullable": true
          },
          "eTag": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "lastModifiedDateTime": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "webUrl": {
            "type": "string",
            "nullable": true
          },
          "cTag": {
            "type": "string",
            "nullable": true
          },
          "size": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "createdBy": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ActionedBy"
              }
            ]
          },
          "lastModifiedBy": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ActionedBy"
              }
            ]
          },
          "parentReference": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentReference"
              }
            ]
          },
          "fileSystemInfo": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/FileSystemInfo"
              }
            ]
          },
          "folder": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Folder"
              }
            ]
          },
          "shared": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Shared"
              }
            ]
          },
          "@microsoft.graph.downloadUrl": {
            "type": "string",
            "nullable": true
          },
          "file": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/File"
              }
            ]
          }
        }
      },
      "ActionedBy": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "user": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/FileUser"
              }
            ]
          }
        }
      },
      "FileUser": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ParentReference": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "driveType": {
            "type": "string",
            "nullable": true
          },
          "driveId": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "path": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "FileSystemInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "createdDateTime": {
            "type": "string",
            "nullable": true
          },
          "lastModifiedDateTime": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Folder": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "childCount": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "Shared": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "scope": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "File": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mimeType": {
            "type": "string",
            "nullable": true
          },
          "hashes": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Hashes"
              }
            ]
          }
        }
      },
      "Hashes": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "quickXorHash": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetFileContent_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetListItem_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "listItem": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MicrosoftListItem"
              }
            ]
          },
          "driveItem": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MicrosoftDriveItem"
              }
            ]
          },
          "content": {
            "type": "string",
            "format": "byte",
            "nullable": true
          },
          "staffMember": {
            "type": "boolean"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "MicrosoftListItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "@odata.etag": {
            "type": "string",
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "nullable": true
          },
          "eTag": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "lastModifiedDateTime": {
            "type": "string",
            "nullable": true
          },
          "webUrl": {
            "type": "string",
            "nullable": true
          },
          "createdBy": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ActionedBy"
              }
            ]
          },
          "lastModifiedBy": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ActionedBy"
              }
            ]
          },
          "parentReference": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentReference"
              }
            ]
          },
          "contentType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ContentType"
              }
            ]
          },
          "fields@odata.context": {
            "type": "string",
            "nullable": true
          },
          "fields": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Fields"
              }
            ]
          },
          "fileName": {
            "type": "string",
            "nullable": true
          },
          "fileType": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ContentType": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Fields": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "@odata.etag": {
            "type": "string",
            "nullable": true
          },
          "Modified": {
            "type": "string",
            "nullable": true
          },
          "FileLeafRef": {
            "type": "string",
            "nullable": true
          },
          "MediaServiceImageTags": {
            "type": "array",
            "nullable": true,
            "items": {}
          },
          "VisibleTo": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "Category": {
            "type": "string",
            "nullable": true
          },
          "NextUpdate": {
            "type": "string",
            "nullable": true
          },
          "Reference": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "ContentType": {
            "type": "string",
            "nullable": true
          },
          "Created": {
            "type": "string",
            "nullable": true
          },
          "AuthorLookupId": {
            "type": "string",
            "nullable": true
          },
          "EditorLookupId": {
            "type": "string",
            "nullable": true
          },
          "_CheckinComment": {
            "type": "string",
            "nullable": true
          },
          "LinkFilenameNoMenu": {
            "type": "string",
            "nullable": true
          },
          "LinkFilename": {
            "type": "string",
            "nullable": true
          },
          "DocIcon": {
            "type": "string",
            "nullable": true
          },
          "FileSizeDisplay": {
            "type": "string",
            "nullable": true
          },
          "ItemChildCount": {
            "type": "string",
            "nullable": true
          },
          "FolderChildCount": {
            "type": "string",
            "nullable": true
          },
          "_ComplianceFlags": {
            "type": "string",
            "nullable": true
          },
          "_ComplianceTag": {
            "type": "string",
            "nullable": true
          },
          "_ComplianceTagWrittenTime": {
            "type": "string",
            "nullable": true
          },
          "_ComplianceTagUserId": {
            "type": "string",
            "nullable": true
          },
          "_CommentCount": {
            "type": "string",
            "nullable": true
          },
          "_LikeCount": {
            "type": "string",
            "nullable": true
          },
          "_DisplayName": {
            "type": "string",
            "nullable": true
          },
          "Edit": {
            "type": "string",
            "nullable": true
          },
          "_UIVersionString": {
            "type": "string",
            "nullable": true
          },
          "ParentVersionStringLookupId": {
            "type": "string",
            "nullable": true
          },
          "ParentLeafNameLookupId": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetListItem_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetListItems_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "listItems": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MicrosoftListItem"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetListItems_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetListOfParentFolders_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "driveItems": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MicrosoftDriveItem"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetListOfParentFolders_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostUploadFile_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "fileId": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "PostUploadFile_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "tags": {
            "type": "string",
            "nullable": true
          },
          "file": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CoreBaseFileDto"
              }
            ]
          },
          "uploadFile": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CoreUploadFile"
              }
            ]
          }
        }
      },
      "CoreBaseFileDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "documentName": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "nullable": true
          },
          "content": {
            "type": "string",
            "format": "byte",
            "nullable": true
          },
          "tagsString": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CoreUploadFile": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "documentName": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "nullable": true
          },
          "content": {
            "type": "string",
            "nullable": true
          },
          "tagsString": {
            "type": "string",
            "nullable": true
          },
          "uploadedDate": {
            "type": "string",
            "format": "date-time"
          },
          "uploadedBy": {
            "type": "string"
          }
        }
      },
      "DeleteFavourite_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetFavourites_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "favourites": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Favourite"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "Favourite": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pageName": {
            "type": "string",
            "nullable": true
          },
          "link": {
            "type": "string",
            "nullable": true
          },
          "userEmail": {
            "type": "string",
            "nullable": true
          },
          "submitted": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "icon": {
            "type": "string",
            "nullable": true
          },
          "colour": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetFavourites_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchFavourite_Request": {
        "example": {},
        "allOf": [
          {
            "$ref": "#/components/schemas/Favourite"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "PostFavourite_Request": {
        "example": {},
        "allOf": [
          {
            "$ref": "#/components/schemas/Favourite"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "GetWhoAmI_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "clientId": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "allowedApis": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "AcademicSessionSetResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "academicSessions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrAcademicSession"
            }
          }
        }
      },
      "OrAcademicSession": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string"
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "parent": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrGuidRef"
              }
            ]
          },
          "schoolYear": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "OrGuidRef": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "href": {
            "type": "string",
            "nullable": true
          },
          "sourcedId": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ClassSetResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "classes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrClass"
            }
          }
        }
      },
      "OrClass": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string"
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "classCode": {
            "type": "string",
            "nullable": true
          },
          "classType": {
            "type": "string"
          },
          "grades": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "subjects": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "course": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrGuidRef"
              }
            ]
          },
          "school": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrGuidRef"
              }
            ]
          },
          "terms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrGuidRef"
            }
          }
        }
      },
      "CourseSetResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "courses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrCourse"
            }
          }
        }
      },
      "OrCourse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string"
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "courseCode": {
            "type": "string",
            "nullable": true
          },
          "org": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrGuidRef"
              }
            ]
          },
          "schoolYear": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrGuidRef"
              }
            ]
          },
          "grades": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "DemographicsSetResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "demographics": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrDemographics"
            }
          }
        }
      },
      "OrDemographics": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string"
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "birthDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "sex": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "EnrollmentSetResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "enrollments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrEnrollment"
            }
          }
        }
      },
      "OrEnrollment": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string"
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "user": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrGuidRef"
              }
            ]
          },
          "class": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrGuidRef"
              }
            ]
          },
          "school": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrGuidRef"
              }
            ]
          },
          "role": {
            "type": "string",
            "nullable": true
          },
          "primary": {
            "type": "boolean"
          }
        }
      },
      "OrgSetResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "orgs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrOrg"
            }
          }
        }
      },
      "OrOrg": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string"
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string"
          },
          "identifier": {
            "type": "string",
            "nullable": true
          },
          "parent": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrGuidRef"
              }
            ]
          }
        }
      },
      "UserSetResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrUser"
            }
          }
        }
      },
      "OrUser": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sourcedId": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string"
          },
          "dateLastModified": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "enabledUser": {
            "type": "boolean"
          },
          "username": {
            "type": "string",
            "nullable": true
          },
          "givenName": {
            "type": "string",
            "nullable": true
          },
          "familyName": {
            "type": "string",
            "nullable": true
          },
          "middleName": {
            "type": "string",
            "nullable": true
          },
          "role": {
            "type": "string",
            "nullable": true
          },
          "identifier": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "orgs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrGuidRef"
            }
          },
          "grades": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "GetSpeakerForms_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "forms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExternalSpeakerForm"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ExternalSpeakerForm": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "hostName": {
            "type": "string",
            "nullable": true
          },
          "speakerName": {
            "type": "string",
            "nullable": true
          },
          "contactDetails": {
            "type": "string",
            "nullable": true
          },
          "visitDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "audienceType": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "biographical": {
            "type": "boolean",
            "nullable": true
          },
          "guidelines": {
            "type": "boolean",
            "nullable": true
          },
          "appropriate": {
            "type": "boolean",
            "nullable": true
          },
          "accompanied": {
            "type": "boolean",
            "nullable": true
          },
          "verify": {
            "type": "boolean",
            "nullable": true
          },
          "submitted": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "submittedBy": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostSpeakerForm_Request": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ExternalSpeakerForm"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "GetExamSettings_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "examSettings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExamSetting"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ExamSetting": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "examType": {
            "type": "string",
            "nullable": true
          },
          "visibleToStudents": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "visibleToStaff": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "visibleToParents": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "dateToDisplay": {
            "type": "string",
            "format": "date-time"
          },
          "saving": {
            "type": "boolean"
          },
          "currentlyVisible": {
            "type": "boolean"
          }
        }
      },
      "GetExamSettings_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchExamSetting_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "examSetting": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExamSetting"
              }
            ]
          }
        }
      },
      "PostExamSetting_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "examSetting": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExamSetting"
              }
            ]
          }
        }
      },
      "GetReviewOfResultsOpen_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "open": {
            "type": "boolean"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetReviewOfResultWordings_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "wording": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReviewOfResultsWording"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ReviewOfResultsWording": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "minLength": 0
          },
          "content": {
            "type": "string",
            "nullable": true
          },
          "updated": {
            "type": "string",
            "format": "date-time"
          },
          "updatedBy": {
            "type": "string",
            "maxLength": 255,
            "minLength": 0
          }
        }
      },
      "GetReviewOfResultWordings_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchReviewOfResultWording_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "wording": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReviewOfResultsWording"
              }
            ]
          }
        }
      },
      "PostReviewOfResultWording_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "wording": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReviewOfResultsWording"
              }
            ]
          }
        }
      },
      "GetReviewOfResultServices_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "services": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReviewOfResultsService"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ReviewOfResultsService": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "level": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "examBoard": {
            "type": "string",
            "nullable": true
          },
          "cost": {
            "type": "string",
            "nullable": true
          },
          "examBoardName": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "hidden": {
            "type": "boolean"
          },
          "visibleToStudents": {
            "type": "boolean"
          },
          "teachingLearning": {
            "type": "boolean"
          }
        }
      },
      "GetReviewOfResultServices_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchReviewOfResultService_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "service": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReviewOfResultsService"
              }
            ]
          }
        }
      },
      "PostReviewOfResultService_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "service": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReviewOfResultsService"
              }
            ]
          }
        }
      },
      "GetReviewOfResultsForms_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "forms": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ReviewOfResultsForm"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ReviewOfResultsForm": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "candidateUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "level": {
            "type": "string",
            "nullable": true
          },
          "examBoardCode": {
            "type": "string",
            "nullable": true
          },
          "componentCode": {
            "type": "string",
            "nullable": true
          },
          "publishedGrade": {
            "type": "string",
            "nullable": true
          },
          "enquiryRequestedBy": {
            "type": "string",
            "nullable": true
          },
          "postServiceID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createdByType": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/ReviewOfResultsFormStatus"
          },
          "consentUpDown": {
            "type": "boolean"
          },
          "consentBillPayer": {
            "type": "boolean"
          },
          "whoWillPay": {
            "type": "string",
            "nullable": true
          },
          "approved": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "consentNotWithdrawn": {
            "type": "boolean"
          },
          "teachingLearningAnonymisedName": {
            "type": "boolean"
          },
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Student"
              }
            ]
          },
          "service": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReviewOfResultsService"
              }
            ]
          }
        }
      },
      "ReviewOfResultsFormStatus": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Pending",
          "PendingHoDApproval",
          "PendingStudentConsent",
          "StudentChangesRequested",
          "Approved",
          "Rejected"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5
        ]
      },
      "GetReviewOfResultsForms_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchReviewOfResultForm_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "form": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReviewOfResultsForm"
              }
            ]
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostReviewOfResultForm_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "form": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReviewOfResultsForm"
              }
            ]
          }
        }
      },
      "PostImportComponentMarks_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "componentMarks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PassExamComponentMark"
            }
          },
          "files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostImportComponentMarks_FileSummary"
            }
          },
          "format": {
            "type": "string",
            "nullable": true
          },
          "dryRun": {
            "type": "boolean"
          },
          "inserted": {
            "type": "integer",
            "format": "int32"
          },
          "updated": {
            "type": "integer",
            "format": "int32"
          },
          "existingDuplicates": {
            "type": "integer",
            "format": "int32"
          },
          "duplicatesWithinUpload": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "integer",
            "format": "int32"
          },
          "definitions": {
            "type": "integer",
            "format": "int32"
          },
          "distinctComponentCodes": {
            "type": "integer",
            "format": "int32"
          },
          "matchedComponentCodes": {
            "type": "integer",
            "format": "int32"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PassExamComponentMark": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "candidateNumber": {
            "type": "integer",
            "format": "int32"
          },
          "componentId": {
            "type": "string"
          },
          "componentMark": {
            "type": "string"
          },
          "year": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "type": "string"
          }
        }
      },
      "PostImportComponentMarks_FileSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "fileName": {
            "type": "string",
            "nullable": true
          },
          "format": {
            "type": "string",
            "nullable": true
          },
          "marks": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "PostImportComponentMarks_Request": {
        "type": "object",
        "example": {
          "year": 0,
          "dryRun": false
        },
        "additionalProperties": false,
        "properties": {
          "file": {
            "type": "string",
            "format": "binary",
            "nullable": true
          },
          "files": {
            "type": "array",
            "nullable": true,
            "items": {}
          },
          "year": {
            "type": "integer",
            "format": "int32"
          },
          "workbookMark": {
            "type": "string",
            "nullable": true
          },
          "duplicateHandling": {
            "type": "string",
            "nullable": true
          },
          "dryRun": {
            "type": "boolean"
          }
        }
      },
      "GetExamResultsForStudent_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExamResultView"
            }
          },
          "examSettings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExamSetting"
            }
          },
          "currentDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "currentDateTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ExamResultView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "year": {
            "type": "integer",
            "format": "int32"
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "exam": {
            "type": "string",
            "nullable": true
          },
          "level": {
            "type": "string",
            "nullable": true
          },
          "grade": {
            "type": "string",
            "nullable": true
          },
          "mark": {
            "type": "string",
            "nullable": true
          },
          "maxMark": {
            "type": "string",
            "nullable": true
          },
          "item": {
            "type": "string",
            "nullable": true
          },
          "board": {
            "type": "string",
            "nullable": true
          },
          "boardCode": {
            "type": "string",
            "nullable": true
          },
          "examCode": {
            "type": "string",
            "nullable": true
          },
          "components": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExamComponentView"
            }
          },
          "examSetting": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExamSetting"
              }
            ]
          }
        }
      },
      "ExamComponentView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "year": {
            "type": "integer",
            "format": "int32"
          },
          "examBoard": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "component": {
            "type": "string",
            "nullable": true
          },
          "componentCode": {
            "type": "string",
            "nullable": true
          },
          "componentMark": {
            "type": "string",
            "nullable": true
          },
          "maximumMark": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "examCode": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetExamResultsForStudent_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetSchoolExamResults_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SchoolExamResultView"
            }
          },
          "examSettings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExamSetting"
            }
          },
          "availableYears": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "year": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "lockdownBypassed": {
            "type": "boolean"
          },
          "hiddenByLockdown": {
            "type": "integer",
            "format": "int32"
          },
          "componentMarksVisible": {
            "type": "boolean"
          },
          "currentDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "currentDateTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "SchoolExamResultView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "upi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "pupilName": {
            "type": "string",
            "nullable": true
          },
          "forename": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "yearGroup": {
            "type": "string",
            "nullable": true
          },
          "house": {
            "type": "string",
            "nullable": true
          },
          "candidateNumber": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "passNameId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "year": {
            "type": "integer",
            "format": "int32"
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "subjectCode": {
            "type": "string",
            "nullable": true
          },
          "exam": {
            "type": "string",
            "nullable": true
          },
          "level": {
            "type": "string",
            "nullable": true
          },
          "grade": {
            "type": "string",
            "nullable": true
          },
          "mark": {
            "type": "string",
            "nullable": true
          },
          "maxMark": {
            "type": "string",
            "nullable": true
          },
          "item": {
            "type": "string",
            "nullable": true
          },
          "boardCode": {
            "type": "string",
            "nullable": true
          },
          "examCode": {
            "type": "string",
            "nullable": true
          },
          "points": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "components": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExamComponentView"
            }
          }
        }
      },
      "GetSchoolExamResults_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetSchoolExamResultsSummary_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "year": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "availableYears": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "gradeDistribution": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExamGradeCountView"
            }
          },
          "levelSummaries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExamLevelSummaryView"
            }
          },
          "subjectSummaries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExamSubjectSummaryView"
            }
          },
          "candidateSummaries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExamCandidateSummaryView"
            }
          },
          "houseSummaries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExamHouseSummaryView"
            }
          },
          "yearTrend": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExamYearTrendView"
            }
          },
          "examSettings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExamSetting"
            }
          },
          "lockdownBypassed": {
            "type": "boolean"
          },
          "hiddenLevels": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "currentDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "currentDateTimeUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ExamGradeCountView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "level": {
            "type": "string",
            "nullable": true
          },
          "grade": {
            "type": "string",
            "nullable": true
          },
          "count": {
            "type": "integer",
            "format": "int32"
          },
          "percent": {
            "type": "number",
            "format": "double"
          },
          "cumulativePercent": {
            "type": "number",
            "format": "double"
          },
          "order": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ExamLevelSummaryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "level": {
            "type": "string",
            "nullable": true
          },
          "entries": {
            "type": "integer",
            "format": "int32"
          },
          "candidates": {
            "type": "integer",
            "format": "int32"
          },
          "unclassified": {
            "type": "integer",
            "format": "int32"
          },
          "topGradeCount": {
            "type": "integer",
            "format": "int32"
          },
          "topGradePercent": {
            "type": "number",
            "format": "double"
          },
          "highGradeCount": {
            "type": "integer",
            "format": "int32"
          },
          "highGradePercent": {
            "type": "number",
            "format": "double"
          },
          "passCount": {
            "type": "integer",
            "format": "int32"
          },
          "passPercent": {
            "type": "number",
            "format": "double"
          },
          "averagePoints": {
            "type": "number",
            "format": "double"
          },
          "topGradeLabel": {
            "type": "string",
            "nullable": true
          },
          "highGradeLabel": {
            "type": "string",
            "nullable": true
          },
          "passLabel": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ExamSubjectSummaryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "level": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "entries": {
            "type": "integer",
            "format": "int32"
          },
          "topGradeCount": {
            "type": "integer",
            "format": "int32"
          },
          "topGradePercent": {
            "type": "number",
            "format": "double"
          },
          "passCount": {
            "type": "integer",
            "format": "int32"
          },
          "passPercent": {
            "type": "number",
            "format": "double"
          },
          "averagePoints": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "ExamCandidateSummaryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "level": {
            "type": "string",
            "nullable": true
          },
          "candidates": {
            "type": "integer",
            "format": "int32"
          },
          "averageEntries": {
            "type": "number",
            "format": "double"
          },
          "averagePointsPerCandidate": {
            "type": "number",
            "format": "double"
          },
          "averagePointsPerEntry": {
            "type": "number",
            "format": "double"
          },
          "cleanSweepCandidates": {
            "type": "integer",
            "format": "int32"
          },
          "cleanSweepPercent": {
            "type": "number",
            "format": "double"
          },
          "noTopGradeCandidates": {
            "type": "integer",
            "format": "int32"
          },
          "topGradeSpread": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExamCandidateBandView"
            }
          }
        }
      },
      "ExamCandidateBandView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "topGrades": {
            "type": "integer",
            "format": "int32"
          },
          "candidates": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ExamHouseSummaryView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "level": {
            "type": "string",
            "nullable": true
          },
          "house": {
            "type": "string",
            "nullable": true
          },
          "entries": {
            "type": "integer",
            "format": "int32"
          },
          "candidates": {
            "type": "integer",
            "format": "int32"
          },
          "topGradeCount": {
            "type": "integer",
            "format": "int32"
          },
          "topGradePercent": {
            "type": "number",
            "format": "double"
          },
          "passCount": {
            "type": "integer",
            "format": "int32"
          },
          "passPercent": {
            "type": "number",
            "format": "double"
          },
          "averagePoints": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "ExamYearTrendView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "year": {
            "type": "integer",
            "format": "int32"
          },
          "level": {
            "type": "string",
            "nullable": true
          },
          "entries": {
            "type": "integer",
            "format": "int32"
          },
          "topGradePercent": {
            "type": "number",
            "format": "double"
          },
          "passPercent": {
            "type": "number",
            "format": "double"
          },
          "averagePoints": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "GetSchoolExamResultsSummary_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetLinks_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExamOptionSubjectLink"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ExamOptionSubjectLink": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "guid"
          },
          "examOptionDescription": {
            "type": "string",
            "maxLength": 255,
            "minLength": 0,
            "nullable": true
          },
          "examQualification": {
            "type": "string",
            "maxLength": 50,
            "minLength": 0,
            "nullable": true
          },
          "subjectCode": {
            "type": "string",
            "maxLength": 50,
            "minLength": 0,
            "nullable": true
          },
          "overrideHoD": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "hoDOverride": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StaffMember"
              }
            ]
          }
        }
      },
      "GetLinks_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchLink_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "link": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExamOptionSubjectLink"
              }
            ]
          }
        }
      },
      "PostLink_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "link": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExamOptionSubjectLink"
              }
            ]
          }
        }
      },
      "PutLink_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "link": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExamOptionSubjectLink"
              }
            ]
          }
        }
      },
      "GetExamBoards_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "examBoards": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ExamBoardView"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ExamBoardView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "boardId": {
            "type": "integer",
            "format": "int32"
          },
          "boardName": {
            "type": "string",
            "nullable": true
          },
          "boardCode": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetExamBoards_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetEvolveVisits_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "systemId": {
            "type": "string",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "filterApplied": {
            "type": "string",
            "nullable": true
          },
          "upstreamEvents": {
            "type": "integer",
            "format": "int32"
          },
          "visits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EvolveVisit"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "EvolveVisit": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "dateId": {
            "type": "integer",
            "format": "int32"
          },
          "ouId": {
            "type": "string",
            "nullable": true
          },
          "ou": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "lav": {
            "type": "boolean"
          },
          "residential": {
            "type": "boolean"
          },
          "overseas": {
            "type": "boolean"
          },
          "adventurousExternalProvider": {
            "type": "boolean"
          },
          "adventurousStaffLed": {
            "type": "boolean"
          },
          "dayVisit": {
            "type": "boolean"
          },
          "onsite": {
            "type": "boolean"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "startTime": {
            "type": "string",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "nullable": true
          },
          "participantUpns": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "leaderId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "leaderMisId": {
            "type": "string",
            "nullable": true
          },
          "leaderName": {
            "type": "string",
            "nullable": true
          },
          "staffUserIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "staffNames": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "staffMisIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "GetEvolveVisits_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchEventSession_Request": {
        "example": {
          "id": 0,
          "eventId": 0,
          "name": "",
          "start": "0001-01-01T00:00:00",
          "end": "0001-01-01T00:00:00"
        },
        "allOf": [
          {
            "$ref": "#/components/schemas/EventSession"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "EventSession": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "eventId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "details": {
            "type": "string",
            "nullable": true
          },
          "start": {
            "type": "string",
            "format": "date-time"
          },
          "end": {
            "type": "string",
            "format": "date-time"
          },
          "maxAttendees": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "location": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostEventSession_Request": {
        "example": {
          "id": 0,
          "eventId": 0,
          "name": "",
          "start": "0001-01-01T00:00:00",
          "end": "0001-01-01T00:00:00"
        },
        "allOf": [
          {
            "$ref": "#/components/schemas/EventSession"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "PatchEventQuestion_Request": {
        "example": {
          "id": 0,
          "eventId": 0,
          "name": "",
          "type": 0
        },
        "allOf": [
          {
            "$ref": "#/components/schemas/EventQuestion"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "EventQuestion": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "eventId": {
            "type": "integer",
            "format": "int32"
          },
          "sessionId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string"
          },
          "hint": {
            "type": "string",
            "nullable": true
          },
          "required": {
            "type": "boolean",
            "nullable": true
          },
          "options": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/QuestionType"
          }
        }
      },
      "QuestionType": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Text",
          "Number",
          "Date",
          "Time",
          "DateTime",
          "MultipleChoice",
          "Checkbox",
          "Dropdown",
          "FileUpload"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8
        ]
      },
      "PostEventQuestion_Request": {
        "example": {
          "id": 0,
          "eventId": 0,
          "name": "",
          "type": 0
        },
        "allOf": [
          {
            "$ref": "#/components/schemas/EventQuestion"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "GetEventDetails_Response": {
        "allOf": [
          {
            "$ref": "#/components/schemas/EventDetail"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "owners": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/EventOwner"
                }
              },
              "questions": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/EventQuestion"
                }
              },
              "sessions": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/EventSession"
                }
              },
              "attendees": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/EventAttendee"
                }
              },
              "answers": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/EventAnswer"
                }
              },
              "anonAttendees": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/EventAttendee"
                }
              }
            }
          }
        ]
      },
      "EventOwner": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "eventId": {
            "type": "integer",
            "format": "int32"
          },
          "email": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "EventAttendee": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "eventId": {
            "type": "integer",
            "format": "int32"
          },
          "email": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/AttendeeType"
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "sessions": {
            "type": "string",
            "nullable": true
          },
          "dateAnswered": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "officeEventId": {
            "type": "string",
            "nullable": true
          },
          "sharedWith": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ShareStatus"
              }
            ]
          }
        }
      },
      "AttendeeType": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Invited",
          "Waitlist",
          "Attending",
          "NotAttending",
          "Attended",
          "NotAttended"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5
        ]
      },
      "ShareStatus": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "NA",
          "SharedWithDepartment",
          "SharedWithEveryone"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "EventAnswer": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "attendeeId": {
            "type": "integer",
            "format": "int32"
          },
          "eventId": {
            "type": "integer",
            "format": "int32"
          },
          "sessionId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "questionId": {
            "type": "integer",
            "format": "int32"
          },
          "answer": {
            "type": "string",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "file": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CoreUploadFile"
              }
            ]
          }
        }
      },
      "EventDetail": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "organiserEmail": {
            "type": "string"
          },
          "organiserName": {
            "type": "string"
          },
          "start": {
            "type": "string",
            "format": "date-time"
          },
          "end": {
            "type": "string",
            "format": "date-time"
          },
          "overview": {
            "type": "string",
            "nullable": true
          },
          "details": {
            "type": "string",
            "nullable": true
          },
          "signupType": {
            "$ref": "#/components/schemas/SignupType"
          },
          "supportQR": {
            "type": "boolean"
          },
          "location": {
            "type": "string",
            "nullable": true
          },
          "enableWaitlist": {
            "type": "boolean"
          },
          "published": {
            "type": "boolean"
          },
          "includeInPD": {
            "type": "boolean"
          },
          "photo": {
            "type": "string",
            "nullable": true
          },
          "photoType": {
            "$ref": "#/components/schemas/PhotoType"
          },
          "photoCredit": {
            "type": "string",
            "nullable": true
          },
          "photoFormat": {
            "type": "string",
            "nullable": true
          },
          "reminderTime": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "SignupType": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Event",
          "Session",
          "OneSession"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "PhotoType": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "None",
          "Unsplash",
          "Upload"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "GetEventDetails_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetMyEvents_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MyEvents"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "MyEvents": {
        "allOf": [
          {
            "$ref": "#/components/schemas/EventDetail"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "attendeeType": {
                "$ref": "#/components/schemas/AttendeeType"
              }
            }
          }
        ]
      },
      "GetMyEvents_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchEventDetails_Request": {
        "example": {
          "owners": [],
          "ownersToRemove": [],
          "id": 0,
          "name": "",
          "organiserEmail": "",
          "organiserName": "",
          "start": "0001-01-01T00:00:00",
          "end": "0001-01-01T00:00:00",
          "signupType": 0,
          "supportQR": false,
          "enableWaitlist": false,
          "published": false,
          "includeInPD": false,
          "photoType": 0,
          "reminderTime": 60
        },
        "allOf": [
          {
            "$ref": "#/components/schemas/EventDetail"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "owners": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/EventOwner"
                }
              },
              "ownersToRemove": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/EventOwner"
                }
              }
            }
          }
        ]
      },
      "PostEventDetails_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "PostEventDetails_Request": {
        "example": {
          "id": 0,
          "name": "",
          "organiserEmail": "",
          "organiserName": "",
          "start": "0001-01-01T00:00:00",
          "end": "0001-01-01T00:00:00",
          "signupType": 0,
          "supportQR": false,
          "enableWaitlist": false,
          "published": false,
          "includeInPD": false,
          "photoType": 0,
          "reminderTime": 60
        },
        "allOf": [
          {
            "$ref": "#/components/schemas/EventDetail"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "PostInviteAttendees_Request": {
        "type": "object",
        "example": {
          "eventId": 0,
          "attendees": []
        },
        "additionalProperties": false,
        "properties": {
          "eventId": {
            "type": "integer",
            "format": "int32"
          },
          "attendees": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/EventAttendee"
            }
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostRemindAttendees_Request": {
        "type": "object",
        "example": {
          "eventId": 0,
          "attendeeTypes": [
            0
          ],
          "messageType": 0
        },
        "additionalProperties": false,
        "properties": {
          "eventId": {
            "type": "integer",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "attendeeTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttendeeType"
            }
          },
          "messageType": {
            "$ref": "#/components/schemas/MessageType"
          }
        }
      },
      "MessageType": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Reminder",
          "ThankYou"
        ],
        "enum": [
          0,
          1
        ]
      },
      "PostSaveSubmission_Request": {
        "type": "object",
        "example": {
          "eventId": 0
        },
        "additionalProperties": false,
        "properties": {
          "eventId": {
            "type": "integer",
            "format": "int32"
          },
          "attendee": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/EventAttendee"
              }
            ]
          },
          "answers": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/EventAnswer"
            }
          }
        }
      },
      "DeleteTheme_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetActiveTheme_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "theme": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/DynamicTheme"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "DynamicTheme": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "themeCode",
          "primaryColour",
          "onPrimaryColour",
          "secondaryColour",
          "onSecondaryColour",
          "tertiaryColour",
          "onTertiaryColour"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "themeCode": {
            "type": "string",
            "maxLength": 50,
            "minLength": 1
          },
          "primaryColour": {
            "type": "string",
            "maxLength": 50,
            "minLength": 1
          },
          "onPrimaryColour": {
            "type": "string",
            "maxLength": 50,
            "minLength": 1
          },
          "secondaryColour": {
            "type": "string",
            "maxLength": 50,
            "minLength": 1
          },
          "onSecondaryColour": {
            "type": "string",
            "maxLength": 50,
            "minLength": 1
          },
          "tertiaryColour": {
            "type": "string",
            "maxLength": 50,
            "minLength": 1
          },
          "onTertiaryColour": {
            "type": "string",
            "maxLength": 50,
            "minLength": 1
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "GetThemes_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "themes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DynamicTheme"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetThemes_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchTheme_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "theme": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/DynamicTheme"
              }
            ]
          }
        }
      },
      "PostTheme_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "theme": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/DynamicTheme"
              }
            ]
          }
        }
      },
      "LookupAddress_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "outcome": {
            "$ref": "#/components/schemas/AddressLookupOutcome"
          },
          "addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LookupAddress_FoundAddress"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "AddressLookupOutcome": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Found",
          "NotFound",
          "Unavailable"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "LookupAddress_FoundAddress": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "addressLine1": {
            "type": "string",
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "nullable": true
          },
          "locality": {
            "type": "string",
            "nullable": true
          },
          "administrativeArea": {
            "type": "string",
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "label": {
            "type": "string"
          }
        }
      },
      "LookupAddress_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetParentDetails_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "details": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ParentDetails"
              }
            ]
          },
          "pending": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetParentDetails_PendingChange"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ParentDetails": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "title": {
            "type": "string",
            "nullable": true
          },
          "forename": {
            "type": "string",
            "nullable": true
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "middleNames": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "daytimeNumber": {
            "type": "string",
            "nullable": true
          },
          "eveningNumber": {
            "type": "string",
            "nullable": true
          },
          "mobileNumber": {
            "type": "string",
            "nullable": true
          },
          "emergencyNumber": {
            "type": "string",
            "nullable": true
          },
          "emailAddress": {
            "type": "string",
            "nullable": true
          },
          "occupation": {
            "type": "string",
            "nullable": true
          },
          "addressLine1": {
            "type": "string",
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "nullable": true
          },
          "locality": {
            "type": "string",
            "nullable": true
          },
          "administrativeArea": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "postCode": {
            "type": "string",
            "nullable": true
          },
          "addressForAll": {
            "type": "boolean"
          }
        }
      },
      "GetParentDetails_PendingChange": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "field": {
            "type": "string",
            "nullable": true
          },
          "newValue": {
            "type": "string",
            "nullable": true
          },
          "submitted": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "GetParentDetails_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostParentChanges_Request": {
        "type": "object",
        "example": {
          "changes": []
        },
        "additionalProperties": false,
        "properties": {
          "changes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParentChange"
            }
          }
        }
      },
      "ParentChange": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "field": {
            "type": "string",
            "nullable": true
          },
          "oldValue": {
            "type": "string",
            "nullable": true
          },
          "newValue": {
            "type": "string",
            "nullable": true
          },
          "submitted": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "userEmail": {
            "type": "string",
            "nullable": true
          },
          "userId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "upi": {
            "type": "string",
            "format": "guid",
            "maxLength": 50,
            "nullable": true
          }
        }
      },
      "GetPupilPassport_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "passports": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PupilPassport"
            }
          },
          "types": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "placesOfIssue": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PupilPassport": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "dateOfIssue": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "expiryDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "passportNationality": {
            "type": "string",
            "nullable": true
          },
          "placeOfIssue": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetPupilPassport_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostPupilPassport_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studentUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "dateOfIssue": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "expiryDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "passportNationality": {
            "type": "string",
            "nullable": true
          },
          "placeOfIssue": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SendVerification_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sent": {
            "type": "boolean"
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SendVerification_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "channel": {
            "type": "string",
            "nullable": true
          },
          "destination": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CheckVerification_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "verified": {
            "type": "boolean"
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CheckVerification_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "channel": {
            "type": "string",
            "nullable": true
          },
          "destination": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetDepartmentMembers_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "departmentName": {
            "type": "string",
            "nullable": true
          },
          "members": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MicrosoftUser"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetDataSyncLogs_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "dataSyncLogs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DataSyncLog"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "DataSyncLog": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "syncDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "updated": {
            "type": "integer",
            "format": "int32"
          },
          "inserted": {
            "type": "integer",
            "format": "int32"
          },
          "deleted": {
            "type": "integer",
            "format": "int32"
          },
          "skipped": {
            "type": "integer",
            "format": "int32"
          },
          "syncEndDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "type": {
            "type": "string"
          }
        }
      },
      "GetDataSyncLogs_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetCustomPage_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetCustomPage_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "customPage": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomPage"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "CustomPage": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "owner": {
            "type": "string",
            "nullable": true
          },
          "modified": {
            "type": "string",
            "format": "date-time"
          },
          "published": {
            "type": "boolean"
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "customUrl": {
            "type": "string",
            "nullable": true
          },
          "useCard": {
            "type": "boolean"
          },
          "completionDescription": {
            "type": "string",
            "nullable": true
          },
          "isEditor": {
            "type": "boolean"
          },
          "accessLevels": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomPageAccessLevel"
            }
          },
          "blocks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomPageBlock"
            }
          },
          "completions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomPageGroupCompletion"
            }
          }
        }
      },
      "CustomPageAccessLevel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "parentId": {
            "type": "string",
            "nullable": true
          },
          "identifier": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "level": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CustomPageBlock": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "pageId": {
            "type": "string",
            "nullable": true
          },
          "order": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "type": {
            "type": "integer",
            "format": "int32"
          },
          "attributes": {
            "type": "string",
            "nullable": true
          },
          "parameters": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CustomPageGroupCompletion": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "identifier": {
            "type": "string",
            "nullable": true
          },
          "completion": {
            "type": "boolean"
          },
          "dateCompleted": {
            "type": "string",
            "format": "date-time"
          },
          "pageId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetCustomPages_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "pages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomPage"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetCustomPages_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetPageViewers_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "viewers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomPageTracker"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "CustomPageTracker": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "pageId": {
            "type": "string",
            "nullable": true
          },
          "userEmail": {
            "type": "string",
            "nullable": true
          },
          "userName": {
            "type": "string",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "count": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetPageViewers_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "MarkPageComplete_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "UpsertCustomPage_Request": {
        "type": "object",
        "example": {
          "type": "Other",
          "published": false,
          "useCard": false,
          "accessLevels": [],
          "blocks": []
        },
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "customUrl": {
            "type": "string",
            "nullable": true
          },
          "published": {
            "type": "boolean"
          },
          "useCard": {
            "type": "boolean"
          },
          "completionDescription": {
            "type": "string",
            "nullable": true
          },
          "accessLevels": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomPageAccessLevel"
            }
          },
          "blocks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomPageBlock"
            }
          }
        }
      },
      "GetCustomPageGroup_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetCustomPageGroup_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "group": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomPageGroup"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "CustomPageGroup": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "pageType": {
            "type": "string",
            "nullable": true
          },
          "trackCompletion": {
            "type": "boolean"
          },
          "accessLevels": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomPageGroupAccessLevel"
            }
          },
          "pages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomPage"
            }
          }
        }
      },
      "CustomPageGroupAccessLevel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "groupId": {
            "type": "string",
            "nullable": true
          },
          "identifier": {
            "type": "string",
            "nullable": true
          },
          "level": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetCustomPageGroups_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomPageGroup"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetCustomPageGroups_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "UpsertCustomPageGroup_Request": {
        "type": "object",
        "example": {
          "trackCompletion": false,
          "accessLevels": []
        },
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "pageType": {
            "type": "string",
            "nullable": true
          },
          "trackCompletion": {
            "type": "boolean"
          },
          "accessLevels": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomPageGroupAccessLevel"
            }
          }
        }
      },
      "GetIncidentMessages_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CriticalMessage"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "CriticalMessage": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "allStaff": {
            "type": "boolean"
          },
          "allStudents": {
            "type": "boolean"
          },
          "allParents": {
            "type": "boolean"
          },
          "message": {
            "type": "string"
          },
          "dateSent": {
            "type": "string",
            "format": "date-time"
          },
          "sentBy": {
            "type": "string",
            "nullable": true
          },
          "interruptionLevel": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetTemplates_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "templatesList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CriticalTemplate"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "CriticalTemplate": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        }
      },
      "SendCriticalMessage_Request": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CriticalMessage"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "SendTestMessage_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "body": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "interruptionLevel": {
            "$ref": "#/components/schemas/InterruptionLevel"
          }
        }
      },
      "AddEditTemplate_Request": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CriticalTemplate"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "GetMeAcademic_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "form": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Form"
              }
            ]
          },
          "house": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/House"
              }
            ]
          },
          "classes": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Class"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetMe_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "user": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/User"
              }
            ]
          },
          "serviceAccount": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ServiceAccount"
              }
            ]
          },
          "roles": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ServiceAccount": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "guid"
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "purpose": {
            "type": "string",
            "nullable": true
          },
          "clientId": {
            "type": "string",
            "nullable": true
          },
          "clientSecret": {
            "type": "string",
            "nullable": true
          },
          "permissions": {
            "type": "string",
            "nullable": true
          },
          "appAccess": {
            "type": "boolean"
          },
          "appLink": {
            "type": "string",
            "nullable": true
          },
          "allowedApis": {
            "type": "string",
            "nullable": true
          },
          "active": {
            "type": "boolean"
          },
          "tokenLifetimeSeconds": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "lastUsed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "allowedApisList": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "GetUser_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "user": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/UserWithDetails"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "UserWithDetails": {
        "allOf": [
          {
            "$ref": "#/components/schemas/User"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "student": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Student"
                  }
                ]
              },
              "staff": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/StaffMember"
                  }
                ]
              },
              "contact": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Contact"
                  }
                ]
              }
            }
          }
        ]
      },
      "GetUser_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "UserSearchScope": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Current",
          "LastYear",
          "NextYear"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "GetContacts_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "contacts": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Contact"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetContacts_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetStudentsOfParent_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "students": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Student"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "Choice_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "optedIn": {
            "type": "boolean"
          },
          "canOptOut": {
            "type": "boolean"
          },
          "currentlyInTerm": {
            "type": "boolean"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "UpdateChoice_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "UpdateChoice_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "optIn": {
            "type": "boolean"
          }
        }
      },
      "SeniorHouseMembership_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "isSeniorHouseMember": {
            "type": "boolean"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "SeniorHouseMembership_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "nameId": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "YearContactList_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "yearContactList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContactListYearRow"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ContactListYearRow": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studentName": {
            "type": "string",
            "nullable": true
          },
          "studentSurname": {
            "type": "string",
            "nullable": true
          },
          "parentName": {
            "type": "string",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "house": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ContactListRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studentNameId": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "HouseContactList_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "houseContactList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContactListHouseRow"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ContactListHouseRow": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studentName": {
            "type": "string",
            "nullable": true
          },
          "studentSurname": {
            "type": "string",
            "nullable": true
          },
          "parentName": {
            "type": "string",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "year": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetCampaignAnalytics_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "campaignId": {
            "type": "integer",
            "format": "int32"
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "sentAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "sendEmail": {
            "type": "boolean"
          },
          "tracked": {
            "type": "boolean"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "delivered": {
            "type": "integer",
            "format": "int32"
          },
          "opened": {
            "type": "integer",
            "format": "int32"
          },
          "clicked": {
            "type": "integer",
            "format": "int32"
          },
          "bounced": {
            "type": "integer",
            "format": "int32"
          },
          "complained": {
            "type": "integer",
            "format": "int32"
          },
          "failed": {
            "type": "integer",
            "format": "int32"
          },
          "pending": {
            "type": "integer",
            "format": "int32"
          },
          "totalClicks": {
            "type": "integer",
            "format": "int32"
          },
          "uniqueClickers": {
            "type": "integer",
            "format": "int32"
          },
          "botClicks": {
            "type": "integer",
            "format": "int32"
          },
          "medianMinutesToOpen": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "medianMinutesToClick": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetCampaignAnalytics_LinkStat"
            }
          },
          "countries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetCampaignAnalytics_CountStat"
            }
          },
          "devices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetCampaignAnalytics_CountStat"
            }
          },
          "timeline": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetCampaignAnalytics_TimelinePoint"
            }
          },
          "timelineBucketMinutes": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetCampaignAnalytics_LinkStat": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "backHalf": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "clicks": {
            "type": "integer",
            "format": "int32"
          },
          "recipients": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetCampaignAnalytics_CountStat": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "label": {
            "type": "string"
          },
          "count": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetCampaignAnalytics_TimelinePoint": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "start": {
            "type": "string",
            "format": "date-time"
          },
          "opened": {
            "type": "integer",
            "format": "int32"
          },
          "clicked": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetCampaignAnalytics_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetCampaignRecipients_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "campaignId": {
            "type": "integer",
            "format": "int32"
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "delivered": {
            "type": "integer",
            "format": "int32"
          },
          "opened": {
            "type": "integer",
            "format": "int32"
          },
          "clicked": {
            "type": "integer",
            "format": "int32"
          },
          "bounced": {
            "type": "integer",
            "format": "int32"
          },
          "complained": {
            "type": "integer",
            "format": "int32"
          },
          "failed": {
            "type": "integer",
            "format": "int32"
          },
          "recipients": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetCampaignRecipients_CampaignRecipientView"
            }
          }
        }
      },
      "GetCampaignRecipients_CampaignRecipientView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string"
          },
          "deliveredAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "openedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "clickedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastError": {
            "type": "string",
            "nullable": true
          },
          "fields": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "GetCampaignRecipients_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetCampaigns_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "campaigns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Campaign"
            }
          },
          "departmentCampaigns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Campaign"
            }
          },
          "allCampaigns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Campaign"
            }
          },
          "department": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Campaign": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "bodyHtml": {
            "type": "string",
            "nullable": true
          },
          "linkTo": {
            "type": "string",
            "nullable": true
          },
          "borderColour": {
            "type": "string",
            "nullable": true
          },
          "interruptionLevel": {
            "type": "integer",
            "format": "int32"
          },
          "sendPush": {
            "type": "boolean"
          },
          "sendEmail": {
            "type": "boolean"
          },
          "audience": {
            "type": "string",
            "nullable": true
          },
          "recipientCount": {
            "type": "integer",
            "format": "int32"
          },
          "sentBy": {
            "type": "string",
            "nullable": true
          },
          "sentByDisplayName": {
            "type": "string",
            "nullable": true
          },
          "sentAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "scheduledFor": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "status": {
            "type": "string"
          },
          "recipientsJson": {
            "type": "string",
            "nullable": true
          },
          "replyTo": {
            "type": "string",
            "nullable": true
          },
          "attachmentNames": {
            "type": "string",
            "nullable": true
          },
          "archivedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "archivedBy": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetReplyAddresses_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetReplyAddresses_ReplyAddressOption"
            }
          }
        }
      },
      "GetReplyAddresses_ReplyAddressOption": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "address": {
            "type": "string",
            "nullable": true
          },
          "label": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "kind": {
            "type": "string"
          }
        }
      },
      "PostArchiveCampaign_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "archivedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "archivedBy": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostArchiveCampaign_Request": {
        "type": "object",
        "example": {
          "archived": true
        },
        "additionalProperties": false,
        "properties": {
          "archived": {
            "type": "boolean"
          }
        }
      },
      "PostSendCampaign_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "recipientCount": {
            "type": "integer",
            "format": "int32"
          },
          "scheduled": {
            "type": "boolean"
          },
          "scheduledFor": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "campaignId": {
            "type": "integer",
            "format": "int32"
          },
          "provider": {
            "type": "string"
          },
          "pushAttempted": {
            "type": "integer",
            "format": "int32"
          },
          "pushDelivered": {
            "type": "integer",
            "format": "int32"
          },
          "oneSignalCount": {
            "type": "integer",
            "format": "int32"
          },
          "emailSent": {
            "type": "integer",
            "format": "int32"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "PostSendCampaign_Request": {
        "type": "object",
        "example": {
          "interruptionLevel": 0,
          "sendPush": true,
          "sendEmail": false,
          "attachments": [],
          "recipients": []
        },
        "additionalProperties": false,
        "properties": {
          "subject": {
            "type": "string",
            "nullable": true
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "linkTo": {
            "type": "string",
            "nullable": true
          },
          "borderColour": {
            "type": "string",
            "nullable": true
          },
          "interruptionLevel": {
            "type": "integer",
            "format": "int32"
          },
          "sendPush": {
            "type": "boolean"
          },
          "sendEmail": {
            "type": "boolean"
          },
          "replyTo": {
            "type": "string",
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CoreUploadFile"
            }
          },
          "senderName": {
            "type": "string",
            "nullable": true
          },
          "audience": {
            "type": "string",
            "nullable": true
          },
          "recipients": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostSendCampaign_CampaignRecipient"
            }
          },
          "scheduledFor": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "PostSendCampaign_CampaignRecipient": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          },
          "fields": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "GetReplyAddressGrants_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "grants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommunicationReplyAddress"
            }
          }
        }
      },
      "CommunicationReplyAddress": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "userEmail": {
            "type": "string"
          },
          "replyTo": {
            "type": "string"
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "grantedBy": {
            "type": "string",
            "nullable": true
          },
          "grantedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "userDisplayName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostReplyAddressGrant_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "grant": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CommunicationReplyAddress"
              }
            ]
          }
        }
      },
      "PostReplyAddressGrant_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "userEmail": {
            "type": "string",
            "nullable": true
          },
          "replyTo": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "DeleteReplyAddressGrant_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "deleted": {
            "type": "boolean"
          }
        }
      },
      "DeleteReplyAddressGrant_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetClasses_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "classes": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Class"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetClasses_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetClassStudents_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "students": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Student"
            }
          }
        }
      },
      "GetClassStudents_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchClassStaffBulk_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "updated": {
            "type": "integer",
            "format": "int32"
          },
          "notFound": {
            "type": "integer",
            "format": "int32"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PatchClassStaffBulk_Request": {
        "type": "object",
        "example": {
          "classStaff": []
        },
        "additionalProperties": false,
        "properties": {
          "classStaff": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClassStaff"
            }
          }
        }
      },
      "PatchClassStaff_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "classStaff": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ClassStaff"
              }
            ]
          }
        }
      },
      "GetBooks_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "books": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/BookReadingBook"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "BookReadingBook": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "nameId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "setCode": {
            "type": "string",
            "nullable": true
          },
          "formYear": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "bookName": {
            "type": "string",
            "nullable": true
          },
          "academic": {
            "type": "boolean",
            "nullable": true
          },
          "author": {
            "type": "string",
            "nullable": true
          },
          "bookImage": {
            "type": "string",
            "nullable": true
          },
          "started": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "finished": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "verified": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "verifiedBy": {
            "type": "string",
            "nullable": true
          },
          "commendation": {
            "type": "boolean",
            "nullable": true
          },
          "distinction": {
            "type": "boolean",
            "nullable": true
          },
          "abandoned": {
            "type": "boolean",
            "nullable": true
          },
          "studentUPI": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "academicYearId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "bookIsbn": {
            "type": "string",
            "nullable": true
          },
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Student"
              }
            ]
          }
        }
      },
      "GetBooks_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetBooksForStudent_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "books": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/BookReadingBook"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetBooksForStudent_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetBookStats_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "stats": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BookReadingStats"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "BookReadingStats": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "books": {
            "type": "integer",
            "format": "int32"
          },
          "booksVerified": {
            "type": "integer",
            "format": "int32"
          },
          "booksCommended": {
            "type": "integer",
            "format": "int32"
          },
          "booksDistinction": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GetBookStats_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchBook_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "book": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BookReadingBook"
              }
            ]
          }
        }
      },
      "PostBook_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "book": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BookReadingBook"
              }
            ]
          }
        }
      },
      "GetBillingExtras_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "billingExtras": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillingView"
            }
          },
          "total": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "BillingView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "pupilName": {
            "type": "string",
            "nullable": true
          },
          "details": {
            "type": "string",
            "nullable": true
          },
          "transDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "amount": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "GetBillingExtras_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetSessions_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sessions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LoginLog"
            }
          }
        }
      },
      "PostMasquerade_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "jwt": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostMasquerade_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "DeleteUserBlockRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetUserBlockActivity_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          },
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetUserBlockActivity_Entry"
            }
          }
        }
      },
      "GetUserBlockActivity_Entry": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "kind": {
            "type": "string",
            "nullable": true
          },
          "outcome": {
            "type": "string",
            "nullable": true
          },
          "provider": {
            "type": "string",
            "nullable": true
          },
          "ip": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "deviceName": {
            "type": "string",
            "nullable": true
          },
          "deviceType": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "details": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetUserBlockActivity_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetUserBlocks_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "blocks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserBlock"
            }
          }
        }
      },
      "UserBlock": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "email"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "email": {
            "type": "string",
            "minLength": 1
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "source": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "active": {
            "type": "boolean"
          }
        }
      },
      "PostUserBlock_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          },
          "reason": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PanopticAuthConfigResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "authority": {
            "type": "string",
            "nullable": true
          },
          "clientId": {
            "type": "string",
            "nullable": true
          },
          "scopes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "PostConvertAppleCodeToToken_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "token": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostConvertAppleCodeToToken_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostConvertCodeToToken_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "token": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostConvertCodeToToken_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          },
          "mobile": {
            "type": "boolean"
          },
          "codeVerifier": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostConvertEmailToToken_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "token": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostConvertEmailToToken_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          },
          "otp": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostConvertFFSecretToToken_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "token": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostConvertFFSecretToToken_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "ffSecret": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostConvertGoogleIdToToken_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "token": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostConvertGoogleIdToToken_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostConvertMobileToToken_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "token": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostConvertMobileToToken_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "mobile": {
            "type": "string",
            "nullable": true
          },
          "otp": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostConvertPanopticAuthToToken_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "token": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostConvertPanopticAuthToToken_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostExternalToken_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "access_token": {
            "type": "string",
            "nullable": true
          },
          "token_type": {
            "type": "string"
          },
          "expires_in": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "EmptyRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "PostJwtForServiceAccount_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "jwt": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostJwtForServiceAccount_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "clientId": {
            "type": "string",
            "nullable": true
          },
          "clientSecret": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostJwtForToken_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "jwt": {
            "type": "string",
            "nullable": true
          },
          "tokenCreationId": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostJwtForToken_Request": {
        "type": "object",
        "example": {
          "tokens": [],
          "keepAlive": false
        },
        "additionalProperties": false,
        "properties": {
          "tokens": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "keepAlive": {
            "type": "boolean"
          },
          "expiryDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "deviceName": {
            "type": "string",
            "nullable": true
          },
          "deviceType": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostRefreshToken_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "jwt": {
            "type": "string",
            "nullable": true
          },
          "tokenCreationId": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "DeleteServiceAccount_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetServiceAccountActivity_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "activity": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ServiceAccountActivity"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ServiceAccountActivity": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "activityId": {
            "type": "string",
            "format": "guid"
          },
          "clientId": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "method": {
            "type": "string",
            "maxLength": 16,
            "nullable": true
          },
          "path": {
            "type": "string",
            "maxLength": 2048,
            "nullable": true
          },
          "queryString": {
            "type": "string",
            "maxLength": 2048,
            "nullable": true
          },
          "apis": {
            "type": "string",
            "nullable": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32"
          },
          "durationMs": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "recordCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ipAddress": {
            "type": "string",
            "maxLength": 64,
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "maxLength": 512,
            "nullable": true
          }
        }
      },
      "GetServiceAccountActivity_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetServiceAccounts_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "serviceAccounts": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ServiceAccount"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetServiceAccounts_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchServiceAccount_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "serviceAccount": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ServiceAccount"
              }
            ]
          }
        }
      },
      "PostRegenerateSecret_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "clientSecret": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostRegenerateSecret_Request": {
        "type": "object",
        "example": {
          "id": "00000000-0000-0000-0000-000000000000"
        },
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "guid"
          }
        }
      },
      "PostServiceAccount_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "clientId": {
            "type": "string",
            "nullable": true
          },
          "clientSecret": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostServiceAccount_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "serviceAccount": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ServiceAccount"
              }
            ]
          }
        }
      },
      "DeleteOverride_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetOverrides_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "masqueradeOverrides": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MasqueradeOverride"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "MasqueradeOverride": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "userEmail": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "masqueradeEmail": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "expires": {
            "type": "boolean"
          }
        }
      },
      "GetOverrides_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchOverride_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "masqueradeOverride": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MasqueradeOverride"
              }
            ]
          }
        }
      },
      "PostOverride_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "masqueradeOverride": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MasqueradeOverride"
              }
            ]
          }
        }
      },
      "PostGenerateMagicLink_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "link": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostGenerateMagicLink_Request": {
        "type": "object",
        "example": {
          "mobile": false,
          "returnLink": false
        },
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          },
          "mobile": {
            "type": "boolean"
          },
          "returnLink": {
            "type": "boolean"
          }
        }
      },
      "DeleteExternalApi_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetExternalApis_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "externalApis": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ExternalApi"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "ExternalApi": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "externalApiId": {
            "type": "string",
            "format": "guid"
          },
          "path": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "active": {
            "type": "boolean"
          }
        }
      },
      "GetExternalApis_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchExternalApi_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "externalApi": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApi"
              }
            ]
          }
        }
      },
      "PostExternalApi_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "externalApi": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApi"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostExternalApi_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "externalApi": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApi"
              }
            ]
          }
        }
      },
      "GetAuthLogs_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "logs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OneTimePin"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "OneTimePin": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "otp": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "requested": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "expiry": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "type": {
            "type": "string",
            "minLength": 1
          }
        }
      },
      "GetAuthLogs_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetAttendanceForStudent_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "attendanceEntries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttendanceEntry"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetAttendanceForStudent_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetAttendanceStudentSummary_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "summary": {
            "$ref": "#/components/schemas/AttendanceSummary"
          }
        }
      },
      "AttendanceSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "timeframe": {
            "$ref": "#/components/schemas/AcademicTimeframe"
          },
          "presentAm": {
            "type": "integer",
            "format": "int32"
          },
          "absentAm": {
            "type": "integer",
            "format": "int32"
          },
          "lateAm": {
            "type": "integer",
            "format": "int32"
          },
          "presentPm": {
            "type": "integer",
            "format": "int32"
          },
          "absentPm": {
            "type": "integer",
            "format": "int32"
          },
          "latePm": {
            "type": "integer",
            "format": "int32"
          },
          "totalAm": {
            "type": "integer",
            "format": "int32"
          },
          "totalPm": {
            "type": "integer",
            "format": "int32"
          },
          "totalLate": {
            "type": "integer",
            "format": "int32"
          },
          "totalPresent": {
            "type": "integer",
            "format": "int32"
          },
          "totalAbsent": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "totalDaysWithAttendanceRecords": {
            "type": "integer",
            "format": "int32"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "distributions": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/AttendanceDistribution"
            }
          },
          "dailyAttendances": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/DailyAttendance"
            }
          },
          "attendanceCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttendanceCode"
            }
          }
        }
      },
      "AcademicTimeframe": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Week",
          "Term",
          "AcademicYear"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "AttendanceDistribution": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalPresent": {
            "type": "integer",
            "format": "int32"
          },
          "totalAbsent": {
            "type": "integer",
            "format": "int32"
          },
          "totalLate": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "present": {
            "type": "number",
            "format": "double"
          },
          "absent": {
            "type": "number",
            "format": "double"
          },
          "late": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "DailyAttendance": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "amCode": {
            "type": "string",
            "nullable": true
          },
          "pmCode": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetAttendanceStudentSummary_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostAttendanceEntries_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "attendanceEntries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttendanceEntry"
            }
          }
        }
      },
      "PostAttendanceEntries_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "attendanceEntries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttendanceEntry"
            }
          }
        }
      },
      "DeleteAttendanceCode_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetAllAttendance_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "attendanceEntries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttendanceEntry"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetAllAttendance_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetAbsenceForDate_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "absenceViews": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AbsenceView"
            }
          },
          "notes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetAbsenceForDate_StudentNote"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "AbsenceView": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "attendanceCode": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AttendanceCode"
              }
            ]
          },
          "students": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Student"
            }
          }
        }
      },
      "GetAbsenceForDate_StudentNote": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "studentUpi": {
            "type": "string",
            "format": "guid"
          },
          "note": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetAbsenceForDate_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetFutureAbsences_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          },
          "futureAbsences": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttendanceFutureAbsence"
            }
          }
        }
      },
      "AttendanceFutureAbsence": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "attendanceFutureAbsenceId": {
            "type": "string",
            "format": "guid"
          },
          "studentUpi": {
            "type": "string",
            "format": "guid"
          },
          "startDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "endDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "submitDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "attendanceCode": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AttendanceCode"
              }
            ]
          },
          "submittedBy": {
            "type": "string",
            "nullable": true
          },
          "student": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Student"
              }
            ]
          }
        }
      },
      "GetFutureAbsences_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostFutureAbsences_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "absences": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttendanceFutureAbsence"
            }
          }
        }
      },
      "PostFutureAbsences_Request": {
        "type": "object",
        "example": {
          "studentUpis": [],
          "startDateTime": "2026-08-30T08:14:16.6772811",
          "endDateTime": "2026-08-30T08:14:16.755509",
          "codeId": "00000000-0000-0000-0000-000000000000",
          "notes": ""
        },
        "additionalProperties": false,
        "properties": {
          "studentUpis": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "guid"
            }
          },
          "startDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "endDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "codeId": {
            "type": "string",
            "format": "guid"
          },
          "notes": {
            "type": "string"
          }
        }
      },
      "GetInterviewNotes_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "notes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssessmentInterviewNote"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "AssessmentInterviewNote": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "openApplyId": {
            "type": "integer",
            "format": "int32"
          },
          "createdBy": {
            "type": "string"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "createdByName": {
            "type": "string"
          },
          "comment": {
            "type": "string",
            "nullable": true
          },
          "grade": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetInterviewNotes_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchInterviewNotes_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "note": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AssessmentInterviewNote"
              }
            ]
          }
        }
      },
      "PostInterviewNotes_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "note": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AssessmentInterviewNote"
              }
            ]
          }
        }
      },
      "DeleteAssessmentAfternoonDate_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetAssessmentAfternoonDates_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "assessmentDates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssessmentDate"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "AssessmentDate": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "tag": {
            "type": "string"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "GetAssessmentAfternoonDates_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchAssessmentAfternoonDate_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "date": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AssessmentDate"
              }
            ]
          }
        }
      },
      "PostAssessmentAfternoonDate_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "date": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AssessmentDate"
              }
            ]
          }
        }
      },
      "GetAssessmentAfternoonComments_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "comments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssessmentComment"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "AssessmentComment": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "openApplyId": {
            "type": "integer",
            "format": "int32"
          },
          "interviewComments": {
            "type": "string",
            "nullable": true
          },
          "interviewGrade": {
            "type": "string",
            "nullable": true
          },
          "dramaComments": {
            "type": "string",
            "nullable": true
          },
          "dramaGrade": {
            "type": "string",
            "nullable": true
          },
          "scienceComments": {
            "type": "string",
            "nullable": true
          },
          "scienceGrade": {
            "type": "string",
            "nullable": true
          },
          "assessmentAfternoonDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "GetAssessmentAfternoonComments_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetAssessmentAfternoonData_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "commentsWithStudents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssessmentAfternoonCommentsWithStudent"
            }
          },
          "userType": {
            "$ref": "#/components/schemas/GetAssessmentAfternoonData_UserType"
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "AssessmentAfternoonCommentsWithStudent": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "comment": {
            "$ref": "#/components/schemas/AssessmentComment"
          },
          "student": {
            "$ref": "#/components/schemas/OpenApplyStudent"
          }
        }
      },
      "GetAssessmentAfternoonData_UserType": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Drama",
          "Science",
          "Admin",
          "Normal"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "GetAssessmentAfternoonData_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostAssessmentAfternoonComment_Request": {
        "type": "object",
        "example": {
          "commentType": 0
        },
        "additionalProperties": false,
        "properties": {
          "commentType": {
            "$ref": "#/components/schemas/PostAssessmentAfternoonComment_CommentType"
          },
          "comment": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AssessmentComment"
              }
            ]
          }
        }
      },
      "PostAssessmentAfternoonComment_CommentType": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Drama",
          "Science",
          "Interview"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "GetAiSpellCheck_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "spellCheckedText": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetAiSpellCheck_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PostAiSpellCheck_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "spellCheckedText": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PostAiSpellCheck_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "text": {
            "type": "string",
            "nullable": true
          },
          "pupilId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "GetReportSummaryReport_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "summary": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Summary"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "Summary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "reportId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "term": {
            "type": "string",
            "nullable": true
          },
          "academicYear": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "studentNameId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "studentUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "generated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "text": {
            "type": "string",
            "nullable": true
          },
          "summaryType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SummaryType"
              }
            ]
          },
          "promptTokens": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "completionTokens": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "outdated": {
            "type": "boolean"
          },
          "totalTokens": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "SummaryType": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Report",
          "Term",
          "AcademicYear"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "GetReportSummaryReport_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetReportSummaryTerm_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "summary": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Summary"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetReportSummaryTerm_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "GetReportSummaryYear_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "summary": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Summary"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetReportSummaryYear_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchReportSummary_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "summary": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Summary"
              }
            ]
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PatchReportSummary_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "summary": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Summary"
              }
            ]
          }
        }
      },
      "PatchReportEntryAiCheck_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "reportEntryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PutReportEntryAiCheck_Request": {
        "type": "object",
        "example": {},
        "additionalProperties": false,
        "properties": {
          "reportEntryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "originalText": {
            "type": "string",
            "nullable": true
          },
          "correctedText": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "RunSync_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "triggered": {
            "type": "boolean"
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "O365SyncConfigDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "staffGroupId": {
            "type": "string",
            "nullable": true
          },
          "studentsGroupId": {
            "type": "string",
            "nullable": true
          },
          "matchField": {
            "type": "string",
            "nullable": true
          },
          "createMissing": {
            "type": "boolean"
          },
          "updateExisting": {
            "type": "boolean"
          },
          "defaultEmployee": {
            "type": "object",
            "additionalProperties": {
              "type": "boolean"
            }
          },
          "customFieldMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldMappingDto"
            }
          },
          "houseCustomFieldId": {
            "type": "string",
            "nullable": true
          },
          "previousSchoolCustomFieldId": {
            "type": "string",
            "nullable": true
          },
          "setFormOnEntry": {
            "type": "boolean"
          },
          "createMissingSchools": {
            "type": "boolean"
          },
          "houseMap": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "schoolMap": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "graphTenantIdSecret": {
            "type": "string",
            "nullable": true
          },
          "graphClientIdSecret": {
            "type": "string",
            "nullable": true
          },
          "graphClientSecretSecret": {
            "type": "string",
            "nullable": true
          },
          "version": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CustomFieldMappingDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "label": {
            "type": "string",
            "nullable": true
          },
          "isamsId": {
            "type": "string",
            "nullable": true
          },
          "source": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "O365ConfigBySchoolRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "StartRunResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "runId": {
            "type": "string",
            "format": "guid"
          }
        }
      },
      "BulkUpdateRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "school": {
            "type": "string"
          },
          "target": {
            "type": "string"
          },
          "dryRun": {
            "type": "boolean"
          },
          "filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BulkUpdateFilter"
            }
          },
          "sets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BulkUpdateSet"
            }
          }
        }
      },
      "BulkUpdateFilter": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "field": {
            "type": "string"
          },
          "op": {
            "type": "string"
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "BulkUpdateSet": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "field": {
            "type": "string"
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "BulkFieldsResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "standardFields": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BulkCustomFieldDto"
            }
          }
        }
      },
      "BulkCustomFieldDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "BulkFieldsRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "LookupResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "found": {
            "type": "boolean"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "subtitle": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "kpis": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LookupRow"
            }
          },
          "sections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LookupSection"
            }
          }
        }
      },
      "LookupRow": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string"
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "LookupSection": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "title": {
            "type": "string"
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LookupRow"
            }
          }
        }
      },
      "LookupRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "SyncRunSnapshotResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "guid"
          },
          "kind": {
            "type": "string"
          },
          "school": {
            "type": "string",
            "nullable": true
          },
          "dryRun": {
            "type": "boolean"
          },
          "status": {
            "type": "string"
          },
          "finished": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "hasReport": {
            "type": "boolean"
          },
          "counters": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            }
          },
          "log": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SyncRunLogLineDto"
            }
          },
          "logTotal": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "SyncRunLogLineDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "t": {
            "type": "string",
            "format": "date-time"
          },
          "level": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      },
      "RunByIdRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "RunReportRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "PhotoDirectoryResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PhotoDirectoryEntry"
            }
          },
          "retrieved": {
            "type": "string",
            "format": "date-time"
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PhotoDirectoryEntry": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "forename": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "initials": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "group": {
            "type": "string",
            "nullable": true
          },
          "hasLeft": {
            "type": "boolean"
          }
        }
      },
      "PhotoDirectoryRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "PhotoUploadResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PhotoUploadResultDto"
            }
          },
          "written": {
            "type": "integer",
            "format": "int32"
          },
          "failed": {
            "type": "integer",
            "format": "int32"
          },
          "dryRun": {
            "type": "boolean"
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PhotoUploadResultDto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "isams": {
            "type": "string"
          },
          "o365": {
            "type": "string"
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PhotoUploadRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "school": {
            "type": "string"
          },
          "target": {
            "type": "string"
          },
          "toIsams": {
            "type": "boolean"
          },
          "toO365": {
            "type": "boolean"
          },
          "dryRun": {
            "type": "boolean"
          },
          "items": {
            "type": "string"
          },
          "photos": {
            "type": "array",
            "nullable": true,
            "items": {}
          }
        }
      },
      "GetApplicantAccess_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "featureSets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetApplicantAccess_FeatureSet"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetApplicantAccess_FeatureSet": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "key": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "enabledForApplicants": {
            "type": "boolean"
          },
          "updatedBy": {
            "type": "string",
            "nullable": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "PutApplicantAccess_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "key": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "enabledForApplicants": {
            "type": "boolean"
          },
          "updatedBy": {
            "type": "string",
            "nullable": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PutApplicantAccess_Request": {
        "type": "object",
        "example": {
          "enabledForApplicants": false
        },
        "additionalProperties": false,
        "properties": {
          "enabledForApplicants": {
            "type": "boolean"
          }
        }
      },
      "GetAcademicYears_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "academicYears": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetAcademicYears_AcademicYearItem"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetAcademicYears_AcademicYearItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "academicYearId": {
            "type": "string",
            "format": "guid"
          },
          "code": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "start": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "end": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "current": {
            "type": "boolean"
          },
          "nominatedCurrent": {
            "type": "boolean"
          },
          "tense": {
            "type": "string",
            "nullable": true
          },
          "updatedBy": {
            "type": "string",
            "nullable": true
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "PutNominateAcademicYear_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "academicYears": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetAcademicYears_AcademicYearItem"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "PutNominateAcademicYear_Request": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "academicYearId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          }
        }
      },
      "GetAccidentForms_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccidentForm"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "AccidentForm": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "personIdentifier": {
            "type": "string",
            "nullable": true
          },
          "studentUpi": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "cause": {
            "type": "string",
            "nullable": true
          },
          "event": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "summary": {
            "type": "string",
            "nullable": true
          },
          "injuryType": {
            "type": "string",
            "nullable": true
          },
          "submittedByEmail": {
            "type": "string",
            "nullable": true
          },
          "formType": {
            "type": "string",
            "nullable": true
          },
          "incidentDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "suspectedConcussion": {
            "type": "boolean",
            "nullable": true
          },
          "visitor": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AccidentVisitor"
              }
            ]
          },
          "injuries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccidentInjury"
            }
          }
        }
      },
      "AccidentVisitor": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "age": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "fullName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "contactNumber": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "AccidentInjury": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "formId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "bodyPart": {
            "type": "string",
            "nullable": true
          },
          "subBodyPart": {
            "type": "string",
            "nullable": true
          },
          "injuryType": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetAccidentForms_Request": {
        "type": "object",
        "additionalProperties": false
      },
      "PatchAccidentForm_Request": {
        "type": "object",
        "example": {
          "form": {
            "id": 0,
            "suspectedConcussion": false,
            "injuries": []
          }
        },
        "additionalProperties": false,
        "properties": {
          "form": {
            "$ref": "#/components/schemas/AccidentForm"
          }
        }
      },
      "PostAccidentForm_Request": {
        "type": "object",
        "example": {
          "form": {
            "id": 0,
            "suspectedConcussion": false,
            "injuries": []
          }
        },
        "additionalProperties": false,
        "properties": {
          "form": {
            "$ref": "#/components/schemas/AccidentForm"
          }
        }
      },
      "GetAbout_Response": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "aboutMeSections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AboutMeSection"
            }
          },
          "meta": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "AboutMeSection": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AboutMeValue"
            }
          }
        }
      },
      "AboutMeValue": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "colored": {
            "type": "boolean"
          },
          "bold": {
            "type": "boolean"
          },
          "italic": {
            "type": "boolean"
          },
          "largeText": {
            "type": "boolean"
          }
        }
      },
      "GetAbout_Request": {
        "type": "object",
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "JWTBearerAuth": {
        "type": "http",
        "description": "Enter a JWT token to authorize the requests...",
        "scheme": "Bearer",
        "bearerFormat": "JWT"
      },
      "ServiceAccount (OAuth2)": {
        "type": "oauth2",
        "description": "Client-credentials grant for external API clients (service accounts). Enter the client's Client ID and Secret - no scopes are required.",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "/external/v1/token"
          }
        }
      }
    }
  }
}